如何更改Grails Spring Security Cookie Path

时间:2013-04-15 12:44:40

标签: grails cookies spring-security remember-me cookie-path

我使用spring security获得了两个grails应用程序:

  • 核心
  • 模块(映射到核心数据库表的用户和角色表)

我希望使用“记住我”对功能进行单点登录。问题是cookie存储在不同的路径“/ Core”和“/ Module”中,我猜测它是它无法工作的原因。

有谁知道如何将cookie路径更改为“/”?

备注

  • 我是否需要在Spring Security或Tomcat服务器配置(使用intellij)中进行更改
  • 我想尽可能避免设置CAS服务器
  • 我正在研究插件作为替代方案

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

当remember-me过滤器创建remember-me cookie时,它会将cookie路径设置为从请求对象获取的上下文路径(请参阅相关的source code here)。如果您要自定义此行为,则需要覆盖应用程序使用的remember-me服务实现的setCookie()cancelCookie()方法(TokenBasedRememberMeServicesPersistentTokenBasedRememberMeServices )在子类中,并配置RememberMeAuthenticationFilter以使用您的自定义实现。

答案 1 :(得分:0)

这是我如何实施的。  使用扩展 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 
}