1
Iam在我的grails應用程序中使用spring安全性。我需要在不同的瀏覽器上使用相同的用戶名登錄才能過期前一個會話。併發會話限制會對此有所幫助嗎?這個怎麼做?如何在併發會話訪問中過期前一個會話
Iam在我的grails應用程序中使用spring安全性。我需要在不同的瀏覽器上使用相同的用戶名登錄才能過期前一個會話。併發會話限制會對此有所幫助嗎?這個怎麼做?如何在併發會話訪問中過期前一個會話
我需要在不同瀏覽器上使用相同的 用戶名登錄時纔會過期前一個會話。併發會話限制 會幫助嗎?
是的,併發會話在這方面將是最好的例子。
如何做到這一點?
創建自己的類(在/ src目錄/常規/)用於通過擴展ConcurrentSessionControlStrategy
類像處理併發會話低於
在我來說,我已經只限於超級管理員用戶只需要一個會話,你可以有多個角色用戶。
而像下面
import com.security.MyConcurrentSessionControlStrategy
import org.springframework.security.core.session.SessionRegistryImpl
import org.springframework.security.web.session.ConcurrentSessionFilter
/**
* For handling the concurrent session control
* exceptionIfMaximumExceeded = false -> invalidates the previous session
* exceptionIfMaximumExceeded = true -> invalidates the new session
*/
sessionRegistry(SessionRegistryImpl)
concurrencyFilter(ConcurrentSessionFilter) {
sessionRegistry = sessionRegistry
logoutHandlers = [ref("rememberMeServices"), ref("securityContextLogoutHandler")]
expiredUrl = '/login/auth'
}
concurrentSessionControlStrategy(MyConcurrentSessionControlStrategy, sessionRegistry) {
alwaysCreateSession = true
exceptionIfMaximumExceeded = false
maximumSessions = -1
}
注註冊我們的下
resources.groovy
實現bean:上面的代碼已經過測試,並且按照預期工作在Grails version 2.4.4
和春季安全spring-security-core:2.0.0
插件
這答案非常有幫助。非常感謝Prakash Thete –