404在Grails的Spring Security Rest插件中注销时

时间:2017-01-19 14:46:11

标签: spring rest grails spring-security spring-security-rest

我正在使用Spring Security Rest Plugin v1.5.4(使用Spring安全核心2.0.0)为Grails 2.4.4在我的项目( Grails - Angularjs )上设置安全系统。有关此插件的文档可以找到here

我正在使用postman chrome rest客户端测试登录和注销,我可以登录确定,但是当我注销时我得到404.

在文档中清楚地说:

  

注销过滤器公开用于删除令牌的端点。它会   从HTTP标头中读取令牌。如果找到,将从中删除   存储,发送200响应。否则,它将发送404   响应

     

您可以使用以下属性在Config.groovy中对其进行配置:

     

配置密钥 ...................................... ............................................. 默认   值

     

grails.plugin.springsecurity.rest.logout.endpointUrl ...................... / API /注销   grails.plugin.springsecurity.rest.token.validation.headerName .... X-AUTH-令牌

因此,在成功登录后,我尝试使用GET方法注销该URL( my_host_url / api / logout )并发送标题 X-Auth-Token 使用我之前从登录中获得的令牌。

但我一直得到404.见下图

enter image description here

编辑 :我正在设置这样的链图(为了获得无状态行为):

grails.plugin.springsecurity.filterChain.chainMap = [
        '/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter',  // Stateless chain
        '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'                                                                          // Traditional chain
]

因此。我在这里做错了什么,或者我错过了什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

你错过了文档中的另一段摘录。它在您引用的块之前就是一条警告信息,并说:

  

使用JWT令牌(默认策略)时无法注销,因为服务器中没有保留任何状态。

     

如果您仍想要注销,可以通过创建JwtTokenStorageService的子类并覆盖方法storeTokenremoveToken来提供自己的实现。然后,在resources.groovy tokenStorageService注册您的实施。