0

ユーザーがgrailsでSpringセキュリティコアプラグインを使用してログインしたかどうかをテストするにはどうすればよいですか?

データベースにある各ユーザーについて、ユーザーがオンラインかどうかを知りたいのですが、春のセキュリティプラグインでこれを行う方法がわかりません

4

1 に答える 1

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 }
}
于 2013-04-24T16:28:42.183 に答える