测试用户是否登录或没有

时间:2013-04-23 15:09:20

标签: grails spring-security

如何使用grails中的spring security core插件测试用户是否登录?

如果用户在线或没有,我想知道我的数据库中的每个用户, 我无法弄清楚如何使用spring security插件

执行此操作

1 个答案:

答案 0 :(得分:0)

我采取的步骤是:

定义bean:

import org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy 
import org.springframework.security.web.session.ConcurrentSessionFilter 
import org.springframework.security.core.session.SessionRegistryImpl 
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy

beans = { 

        sessionRegistry(SessionRegistryImpl) 

        sessionAuthenticationStrategy(ConcurrentSessionControlStrategy, sessionRegistry) { 
                maximumSessions = -1 
        } 

        concurrentSessionFilter(ConcurrentSessionFilter){ 
                sessionRegistry = sessionRegistry 
                expiredUrl = '/login/concurrentSession' 
        } 
} 

从grails安装模板(grails install-templates)

将监听器添加到web.xml:

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

在我的服务中注入sessionRegistry:

def sessionRegistry

...

def getSessionInformations(User user){
        def userDetails =   userDetailsService.loadUserByUsername(user.username)
        def sessionInfo = sessionRegistry.getAllSessions(userDetails, true)
        return sessionInfo
    }

def isOnline(User user) {
if (getSessionInformations(user)){return true } else { return false }
}