【问题标题】:How to change Grails Spring Security Cookie Path如何更改 Grails Spring Security Cookie 路径
【发布时间】:2013-04-07 14:01:35
【问题描述】:
我有两个使用 Spring Security 的 grails 应用程序:
我想要使用“记住我”的单点登录功能。问题是 cookie 存储在不同的路径“/Core”和“/Module”中,我猜这是它不起作用的原因。
有人知道如何将cookie路径更改为“/”吗?
注意事项:
- 是否需要更改 Spring Security 或 Tomcat 服务器配置(使用 intellij)
- 如果可能,我想避免设置 CAS 服务器
- 我正在寻找插件作为替代方案
感谢任何帮助,将不胜感激
【问题讨论】:
标签:
grails
cookies
spring-security
remember-me
cookie-path
【解决方案1】:
remember-me 过滤器在创建 remember-me cookie 时,会将 cookie 路径设置为从请求对象获得的上下文路径(参见相关的source code here)。如果要自定义此行为,则需要在子类中覆盖应用程序使用的 remember-me 服务实现的 setCookie() 和 cancelCookie() 方法(TokenBasedRememberMeServices 或 PersistentTokenBasedRememberMeServices),并配置RememberMeAuthenticationFilter 使用您的自定义实现。
【解决方案2】:
这是我实现它的方式。
使用 extends TokenBasedRememberMeServices 创建一个新服务
覆盖 setCookie 和 cancelCookie 方法来设置 cookie 路径。
添加cookiePath变量并添加方法到setCookepath()
更新 resources.groovy
rememberMeServices(YourTokenBasedRememberMeServices) {
userDetailsService = ref("userDetailsService")
key = conf.rememberMe.key
cookieName = conf.rememberMe.cookieName
alwaysRemember = conf.rememberMe.alwaysRemember
tokenValiditySeconds = conf.rememberMe.tokenValiditySeconds
cookiePath = some config variable
}