2016-06-29 14 views
2

私は1人のユーザーしかアクティブな状態(つまりログイン)である必要があり、他のユーザーは同じ資格情報を使ってログインできません。私はIonic + AngularJs(ハイブリッド)モバイルアプリを使って他のものを制限する必要があります。最初の人物が既にログインしているときに二人目のログインを防止する方法

現在、Hybridフレームワークとして、Java側とクライアント側のサーバー側を使用しています。ユーザーは、それはそれは同じではありませんトークン基本認証を生成し、すべてのREST APIサービスコールのthert後

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私のサーバー側でも同じ概念を使用していました。 **ログイン(アクティブ)の最初のユーザーと同じ資格情報を持つ次のユーザーのログイン、次に2番目のユーザーがアクティブになり、最初のユーザーが非アクティブなモードになる** – Sai

答えて

0

あなたが探しているのは、セッション管理です。

トークンを使用しているため、認証後にトークンを保存することをお勧めします($sessionStorageまたは$localStorage - ngStorageなどの永続ストレージ)。

他の誰かがログインを実行する場合、これらのストアでトークンを確認するだけです。何も存在しない場合、そのユーザはログインを継続することができる。それ以外の場合は、「最初にログアウトする」というメッセージで約束を拒否します。

+0

しかし、それは単一のデバイスに関連していません。私は複数のデバイスで実行したいです。 – Sai

関連する問題