Grails会话属性不会在两个应用程序之间刷新

时间:2013-01-29 16:37:48

标签: session grails cas jasig

我有两个使用JASIG CAS Client Plugin的单独Grails应用程序。当我的应用程序运行时,不同的用户可以对我的CAS服务器进行身份验证(使用客户端插件)。

除了身份验证之外,我在两个应用程序中都使用Grails Filter来 授权 。用户可能已经过身份验证,但我想确保只有特定用户才能访问相应的应用程序。

一切正常,但以下情况除外:

  1. 我使用用户名“jack”成功通过CAS服务器进行身份验证,并且我被授权使用应用程序A.
  2. 我关闭了应用程序A并退出了CAS。
  3. 我使用用户名“jill”成功通过CAS服务器进行身份验证,但我无权使用应用程序B,因为会话中的用户名仍为“jack”
  4. 我的应用程序启动时,是否需要在任何时候刷新会话?如果是这样,我该怎么做?这是我的过滤器的代码:

    import edu.yale.its.tp.cas.client.filter.CASFilter
    
    class SecurityFilters {
        def filters = {
            loginCheck(controller: '*', action: '*') {
                before = {
    
                    def username = session?.getAttribute(CASFilter.CAS_FILTER_USER)?.toLowerCase()
    
                    if (username in grailsApplication.config.users) {
                        return true
                    } else {
                        render view: '/invalid_user', model: [username: username]
                        return false
                    }
                }
            }
        }
    }
    

0 个答案:

没有答案