2017-03-27 51 views

回答

2

我需要在不同瀏覽器上使用相同的 用戶名登錄時纔會過期前一個會話。併發會話限制 會幫助嗎?

是的,併發會話在這方面將是最好的例子。

如何做到這一點?

創建自己的類(在/ 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插件

+0

這答案非常有幫助。非常感謝Prakash Thete –