2016-06-29 80 views
2

我有一個要求,即只有一個用戶處於活動狀態(即登錄),並且其他用戶不能使用相同的憑據登錄。當他嘗試登錄時我需要使用Ionic + AngularJs(混合)移動應用來限制其他人。我們如何防止第二人登錄時已經登錄第一個人

目前正在使用服務器端作爲Java和客戶端作爲混合框架。 並且當用戶登錄它產生的基本認證令牌和thert每REST API服務調用後正在發送生成的令牌作爲

login: function(userName, password, authTokenValue) { 

     var loginPath = '/login/' + userName + '/' + password; 
     //calling loginCustomer rest service 
     return $resource(host + loginPath, {}, { 

      query: { 
       headers: { 

        'X-Auth-Token': authTokenValue 
       }, 
       method: 'GET' 
      } 
     }); 
    } 

和令牌是基於用戶名和密碼生成它是不相同的(即,隨機生成令牌值) 但我沒有爲任何用戶維護任何會話,但我有一個要求,即當用戶已經登錄時,另一個人無法使用相同憑據訪問這些服務。

請提供一些指導我如何實現它? 對不起我的英文不好

+0

其實我不知道是否有任何方法使用inbuild函數來做到這一點。如果我必須這樣做,生病就是這樣。保存上次登錄的IP,登錄時間和註銷時間,並在下次用戶登錄時進行比較。 –

+0

可能您正在尋找併發會話控制:http://docs.spring.io/spring-security/site/docs/3.1.x/reference/ns-config.html#ns-concurrent-sessions –

+0

@SlavaSemushin I在我的服務器端使用了相同的概念。 **但第一個用戶登錄(活動)和下一個用戶登錄具有相同的憑據,然後第二個用戶變爲活動,第一個用戶變爲非活動模式** – Sai

回答

0

你可能要找的是會話管理。

由於您使用令牌這可能是一個好主意,保存令牌,一旦你驗證(持久性存儲如$sessionStorage$localStorage - 查ngStorage)。

當其他人想要執行登錄時,只需檢查這些存儲以獲取令牌。如果不存在,則該用戶可以繼續他們的登錄。否則,您只需以「先註銷」消息拒絕承諾。

+0

的建議,但它與單個設備無關。我想在多個設備上執行。 – Sai

相關問題