【发布时间】:2017-06-04 07:43:50
【问题描述】:
我正在为 Grails 2.4.4 使用 Spring Security Rest Plugin v1.5.4(使用 spring security core 2.0.0)在我的项目(Grails - Angularjs)上设置安全系统。关于这个插件的文档可以在here找到。
我正在使用 postman chrome rest 客户端测试登录和注销,我可以正常登录,但我在注销时收到 404。
在文档中明确表示:
注销过滤器公开了一个用于删除令牌的端点。它会 从 HTTP 标头中读取令牌。如果找到,将从中删除 存储,发送 200 响应。否则,它将发送 404 回应
您可以使用以下属性在 Config.groovy 中对其进行配置:
配置键....................... .............................默认 价值
grails.plugin.springsecurity.rest.logout.endpointUrl......................./api/logout grails.plugin.springsecurity.rest.token.validation.headerName....X-Auth-Token
因此,在成功登录后,我尝试使用 GET 方法注销该 url (my_host_url/api/logout) 并发送标头 X-Auth-Token 使用我之前从登录获得的令牌。
但我一直收到 404。见下图
编辑:我正在这样设置链图(为了获得无状态行为):
grails.plugin.springsecurity.filterChain.chainMap = [
'/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter', // Stateless chain
'/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter' // Traditional chain
]
所以。我在这里做错了什么,或者我错过了什么?
提前致谢!
【问题讨论】:
-
您能否提供“注销”方法的代码,我认为,资源映射缺少“获取”方法或正确的“路径”
-
@devbd,感谢您的回复!实际上我没有实现
logout方法。我认为插件将其隐式添加为login方法。对吗? -
请检查插件默认登录网址。我认为,网址应该只是“/logout”..
-
我的错误..,请检查 grails.plugin.springsecurity.filterChain.chainMap 是否设置为“无状态”
标签: spring rest grails spring-security spring-security-rest