2

我有两个使用spring security的grails应用程序:

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

我想使用“记住我”来实现单点登录功能。问题是 cookie 存储在不同的路径“/Core”和“/Module”中,我猜这是它不起作用的原因。

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

备注

  • 我是否需要更改 Spring Security 或 Tomcat 服务器配置(使用 intellij)
  • 如果可能,我想避免设置 CAS 服务器
  • 我正在寻找插件作为替代方案

感谢任何帮助将不胜感激

4

2 回答 2

1

当 remember-me 过滤器创建 remember-me cookie 时,它​​会将 cookie 路径设置为从请求对象中获取的上下文路径(请参阅此处的相关源代码)。如果您想自定义此行为,您需要覆盖您的应用程序在子类中使用的记住我服务实现的setCookie()和方法(或者或),并配置以使用您的自定义实现。cancelCookie()TokenBasedRememberMeServicesPersistentTokenBasedRememberMeServicesRememberMeAuthenticationFilter

于 2013-04-15T13:54:18.320 回答
0

这是我实现它的方式。创建一个新服务,扩展TokenBasedRememberMeServices 覆盖setCookiecancelCookie方法来设置 cookie 路径。添加cookiePath变量并添加方法到setCookepath ()

更新资源.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 
}
于 2014-09-15T15:54:58.537 回答