Redisの+トークン人は唯一のアカウントでのログインを達成することができます

自分自身に何も、私は突然ので、私の最初の考えを練習することを決定し、そのような小さな機能を考えた人は唯一のログインアカウントことができた場合、2例があるかもしれないこと、一つは元の登録者ではありませんアカウント失わ置き換え、後者は現在のアカウントに関する情報を記録するように指示されます時間のようなものがあるが上陸した、現在の考え方では、これら2例ということも良く、1または2を助言してください場合、それは、最初のレコードにアプローチするつもりです。

1.ログ前者の後者アウトを交換するには、この実施形態は、一定のログ(トークンログインすなわち、戻り)同じトークン缶をRedisの照会することによってトークンとインターセプターを生成するかどうかを決意を維持することができます。

      =トークン列req.getHeader(UserConstants.ACCESS_TOKEN);
         IF (Strings.isNullOrEmpty)(トークン){
             リターン falseに; 
        } 
        整数のuserId = Integer.parseInt(JwtUtil.getUserId(トークン)); 
        文字列reqToken。=(文字列)redisUtil GET(+ UserConstants.PREFIX_USER_TOKEN USERID);
         場合(ObjectUtils.isEmpty(reqToken)){
             リターン falseに; 
        } 
//ここで、後者がログインしていない場合には、後者によって生成された比較reqToken前者トークンは、次いで、トークンが一致reqTokenある
場合を(!token.equals(reqToken)){ リターン ; } 場合(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN + USERID)< 1 ){ 戻り } redisUtil。セット(UserConstants.PREFIX_USER_TOKEN + はuserId、reqToken、UserConstants.TOKEN_EXPIRE_TIME)。 返す ;

テスト結果:

 ここでは第二世代は、第二の登録をシミュレートするためにトークン:

Tを言っていること、失敗した最初の登録者トークンのログイン画面を継続して使用します:

 

 

 

最初よりもさらに簡単です2. 2番目は、ユーザーのキー保存されたRedisのチェックアウトの限りでログインしたときには、メッセージ「アカウントがログインした」、直接返すnullではありませんが、ここで重要なのは、私がログインしています新しいコントローラは、いくつかの行を追加します。

        ストリングisLogin =(文字列)redisUtil。取得(UserConstants.PREFIX_USER_TOKEN + userNameに)。
        もし(!Strings.isNullOrEmpty(isLogin)){
             リターンResult.error(UserConstants.ACCOUNT_HAS_BEEN_LOGGED_IN)。
        } 
        redisUtil。セット(UserConstants.PREFIX_USER_TOKEN +ユーザ名、ユーザ名、UserConstants.TOKEN_EXPIRE_TIME)。

インターセプタは少しだけ、それがこのキーの有効期限を設定追加し、ビットを変更します:

     文字列名= JwtUtil.getUsername((文字列)reqToken)。
        redisUtil。セット(UserConstants.PREFIX_USER_TOKEN +ユーザ名、ユーザ名、UserConstants.TOKEN_EXPIRE_TIME)。

テスト結果:

ログインに成功することによって最初の着陸は初めて。

 

これは、ログイン時の情報を返します。

おすすめ

転載: www.cnblogs.com/red-star/p/12585402.html