2014-09-13 86 views
1

我正在使用Grails应用程序。我使用Jaxr插件创建了RestApi。后来我添加了Spring Security Core Plugin来授权和验证我的资源。当我将这个Spring Security的核心插件我的REST API停止工作,我提到过有太多: Exception While Using Rest API developed using JAX-RS Plugin with Spring Security Core Plugin使用Spring Security Rest插件时遇到的问题

所以,我用Spring Security的休息插件来secire我的REST API。我遵循了整个文档。我成功生成授权令牌。

这里是我的Config.groovy文件部分,我为了补充链图来验证:

grails.plugin.springsecurity.filterChain.chainMap = [ 
    '/MediaSenseEvents/SessionEvents': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter', // Stateless chain 
    '/MediaSenseEvents/login': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter', // Stateless chain 
    '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'           // Traditional chain 

]

而且,我已经添加了API调用过的路径:

grails.plugin.springsecurity.controllerAnnotations.staticRules = [ 
.... 
'/MediaSenseEvents/SessionEvents': ['permitAll'], 
.... 
]  

'/ MediaSenseEvents/SessionEvents'是我的API调用的路径。 而endpointUrl =“/ MediaSenseEvents /登录”

这是我的事件监听器类来监听API调用使得它:

@Path('/MediaSenseEvents/SessionEvents') 
class EventsListener { 

@POST 
//@Consumes("application/x-www-form-urlencoded") 
@Consumes("application/json") 
//@Secured(['permitAll']) 
public String postRequest(String message, @Context HttpServletRequest request) throws IOException  { 
........... 
} 

现在,我无法理解怎么可能我用这个生成令牌以保护我的REST API调用。我仍然无法进行REST API调用,并且使用JAXR PlugIn来实现其他API。

+0

我相信你的静态规则处理不正确。您是否用'@ Secure'注释尝试过?此外,我需要看到一个完整的调试输出,看看发生了什么。 – 2014-10-06 13:25:34

回答

0

你能分享你的Config.groovy吗?您已经新增网址到链图为了验证这样的:

grails.plugin.springsecurity.filterChain.chainMap = [ 
    '/v1/secure/api/**':'restTokenValidationFilter,restExceptionTranslationFilter,filterInvocationInterceptor',// Stateless chain 
] 

,然后把生成的令牌头,以改变头参数名称看看以下属性

grails.plugin.springsecurity.rest.token.validation.headerName = 'X-Auth-Token' 
+0

我已经添加了我的Config.groovy文件和链式地图参数。那里的一切都好吗? – 2014-09-15 10:52:04

+0

更新:在进行API调用时指定验证头名称之前我得到错误:401-未授权 但是,现在当我指定验证头标名称与生成的令牌时出现错误:403-Forbidden – 2014-09-15 11:12:44

相关问题