redisベースtokenユーザーがログインしているかどうかを検証

2300 ワード

プロジェクトのニーズに基づいて、redisベースのtokenログイン検証を実現します.どのように実現すればいいですか.
バックエンド実装:
1.redis関連依存の導入
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
            org.springframework.session
            spring-session-data-redis
            2.0.5.RELEASE
        

2.Controllerレイヤはtoken情報を生成してredisに格納する
        //                           redis 
        //      token UUID
        String uuidToken= UUID.randomUUID().toString();
        uuidToken=uuidToken.replace("-","");

        // token            
        redisTemplate.opsForValue().set(uuidToken,userModel);
        redisTemplate.expire(uuidToken,1, TimeUnit.HOURS);

        //   token
        return CommonReturnType.create(uuidToken);

3.認証が必要な登録先を呼び出せばよい
 String token = httpServletRequest.getParameterMap().get("token")[0];
        if (StringUtils.isEmpty(token)) {
            throw new BusinessException(EmBusinessError.USER_NOT_LOGIN, "      ,    ");
        }
        //         
        UserModel userModel= (UserModel) redisTemplate.opsForValue().get(token);
        if(userModel==null){
            throw new BusinessException(EmBusinessError.USER_NOT_LOGIN, "      ,    ");
        }
        
        OrderModel orderModel = orderService.creatOrder(userModel.getId(), itemId, promoId, amount);
        return CommonReturnType.create(null);

フロントエンド実装
1.戻り値からtokenを取り出しlocalstorageに格納
  if(data.status == "success") {
  alert("    ");
  //  token  localstorage
  var token = data.data;
  window.localStorage["token"] = token;
  window.location.href = "listitem.html";
}

2.ユーザーがログインしているかどうかを確認する
var token = window.localStorage["token"];
	if(token == null){
		alert("    ,    ");
		window.location.href="login.html";
		return false;
	}


3.もちろん、tokenをバックエンドに転送してもう一度チェックする必要があります
url:"http://"+g_host+"/order/createorder?token="+token,