ユーザーがgrailsでSpringセキュリティコアプラグインを使用してログインしたかどうかをテストするにはどうすればよいですか?
データベースにある各ユーザーについて、ユーザーがオンラインかどうかを知りたいのですが、春のセキュリティプラグインでこれを行う方法がわかりません
ユーザーがgrailsでSpringセキュリティコアプラグインを使用してログインしたかどうかをテストするにはどうすればよいですか?
データベースにある各ユーザーについて、ユーザーがオンラインかどうかを知りたいのですが、春のセキュリティプラグインでこれを行う方法がわかりません
私が取った手順は次のとおりです。
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 }
}