2013-01-06 111 views
2

任何遇到失败登录错误消息的人都不会出现?Grails 2.1.1和弹簧安全消息

我正在将grails 1.3.7应用程序升级到grails 2.1.1,并且我对弹簧安全性核心功能有两个问题。

首先,如果我尝试使用无效登录,则认证失败,但在闪存消息中没有错误消息。{}

其次,我正在使用这样的方法来获取活动会话的当前计数。它不再是准确的,因为它只是增加并且不能识别注销。

def getCurrentSessionCount(){ 
    def sessioncount = 0 
    sessionRegistry.getAllPrincipals().each{ 
     sessioncount += sessionRegistry.getAllSessions(it, false).size() 
    } 
    return sessioncount; 
} 

回答

1

好吧,这是在LoginController中差异如何填充错误消息。在1.3.7和以前的安全插件代码如下:

msg = SpringSecurityUtils.securityConfig.errors.login.expired 

但2.1.1和升级后的春季安全插件1.2.7.3的代码需要使用上下文,如:

msg = g.message(code: "springSecurity.errors.login.disabled") 

会话计数与修改需要添加会话监听器的web.xml有关,但是在新的spring 3.0中,它被移动了,因此新条目看起来应该如下所示:

<listener> 
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> 
</listener>