0

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

除了身份验证,我在两个应用程序中都使用 Grails 过滤器进行授权。用户可能已通过身份验证,但我想确保只有某些用户才能访问适当的应用程序。

一切正常,除了以下情况:

  1. 我使用用户名“jack”成功地对 CAS 服务器进行了身份验证,并且我被授权使用应用程序 A。
  2. 我关闭应用程序 A 并退出 CAS。
  3. 我使用用户名“jill”成功对 CAS 服务器进行身份验证,但我无权使用应用程序 B,因为会话中的用户名仍然是“jack”

当我的应用程序启动时,我是否需要随时刷新会话?如果是这样,我该怎么做?这是我的过滤器的代码:

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
                }
            }
        }
    }
}
4

0 回答 0