在 Grails 的 Spring Security Rest Plugin 中注销时出现 404
Posted
技术标签:
【中文标题】在 Grails 的 Spring Security Rest Plugin 中注销时出现 404【英文标题】:404 when do logout in Spring Security Rest Plugin for Grails 【发布时间】: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 是否设置为“无状态”
5.2.插件配置alvarosanchez.github.io/grails-spring-security-rest/latest/docs
【参考方案1】:
您错过了文档中的另一个摘录。这是您引用的块之前的警告消息,并说:
使用 JWT 令牌(默认策略)时无法注销,因为服务器中不会保留任何状态。
如果您仍然想要注销,您可以通过创建
JwtTokenStorageService
的子类并覆盖方法storeToken
和removeToken
来提供自己的实现。然后,在resources.groovy
中将您的实现注册为tokenStorageService
。
【讨论】:
嗨,@Álvaro Sánchez-Mariscal,是否有推荐的教程来教授如何使用JwtTokenStorageService
的子类实现注销功能?我知道当我将 Spring Security Rest 与 GORM 一起使用时,注销功能可以完美运行。另外,感谢伟大的插件:)
我不知道以上是关于在 Grails 的 Spring Security Rest Plugin 中注销时出现 404的主要内容,如果未能解决你的问题,请参考以下文章
Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit
Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit
Grails 3 Spring Security 覆盖登录表单
在 Spring Security 登录期间设置 Grails/Spring Locale - 如何?