当用户域“已启用”字段设置为false时,使用Grails Acegi插件。用户仍然可以登录

时间:2011-07-27 16:00:30

标签: grails groovy grails-plugin spring-security

Acegi Grails插件本身是否支持用户禁用?

从文档中看来它支持“启用”字段.. 但是在将Users“enabled”字段设置为false后,用户仍然可以登录并且不会抛出“user is disabled”异常(尽管在默认的logincontroller中似乎有一个用户禁用异常的捕获)...

如果支持此功能,除了将用户“enabled”字段设置为false之外,是否还需要进行任何其他更改?

猜测这可能不受支持,我已经向登录控制器添加了一个检查,以检查用户登录时是否启用了用户并将其发送回登录屏幕并显示已禁用的消息...

    def index = {
   if (isLoggedIn()) {
    def dc = authenticateService.principal().domainClass
        def user = User.get( dc.id )
        if (!user.enabled){
            session.invalidate()
            flash.message = "User '"+user.username+"' is disabled."
            redirect action: auth, params: params
        }else{
            setLoginDate()
            redirect uri: '/home/'
        }
    }

但是,这仅在我直接访问登录页面时有效。当我在应用程序中输入url(例如* / user / list)后尝试登录时;用户登录并获取网址,而无需在logincontroller中调用我的支票...

1 个答案:

答案 0 :(得分:0)

请尝试使用过滤器。我不确定是否会调用索引闭包,除非你确实命中了该控制器的基URI。

http://www.grails.org/doc/1.3.x/guide/single.html#6.6%20Filters