2013-04-15 34 views
2

我有使用彈簧安二Grails應用程序:如何改變Grails的Spring Security的Cookie路徑

  • 核心
  • 模塊(用戶和角色表映射到核心數據庫表)

我想用「記住我」的方式在功能上有一個單一的標誌。問題在於cookie存儲在不同的路徑「/ Core」和「/ Module」中,我猜測它是不工作的原因。

有誰知道如何將cookie路徑更改爲「/」?

注意

  • 我需要做的春季安全或Tomcat服務器配置(使用的IntelliJ)的變化
  • 我希望避免設立一個CAS服務器如果可能的話
  • 我正在尋找插件作爲替代

謝謝任何​​幫助將不勝感激

+1

爲Tomcat:http://stackoverflow.com/questions/4332334/what-is-空會話路徑在tomcat – Ritesh

+0

我有一個類似的問題 - 看看我的解決方案在這裏:[解決方案與'HttpServletResponseWrapper'](http://stackoverflow.com/a/41117823/7095884) – olivmir

+0

我有一個類似的問題 - 看看我的解決方案[與HttpServletResponseWrapper](http://stackoverflow.com/a/4111 7823/7095884) – olivmir

回答

1

當remember-me過濾器創建remember-me Cookie時,它將cookie路徑設置爲從請求對象獲取的上下文路徑(請參閱相關source code here)。如果要定製此行爲,則需要覆蓋應用程序使用的記事-I服務實現的setCookie()cancelCookie()方法(TokenBasedRememberMeServicesPersistentTokenBasedRememberMeServices),並配置RememberMeAuthenticationFilter以使用您的自定義實現。

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 
}