springboot+jwt 기반 으로 token 리 셋 프로 세 스 분석 실현
1:이러한 방식 은 온라인 리 셋 입 니 다.예 를 들 어 설 정 된 token 유효기간 은 30min 입 니 다.그러면 자원 에 접근 할 때마다 차단기 에서 token 이 만 료 되 었 는 지 판단 합 니 다.만 료 되 지 않 으 면 token 을 리 셋 하 는 시간 은 30min 이 고 그렇지 않 으 면 다시 로그 인 합 니 다.주의해 야 할 것 은 이런 방식 입 니 다.저 는 로그 인 한 후에 token 에 redis 가 존재 합 니 다.
// token redis
String token = JwtUtil.sign(userName,user.getId());
redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, token,UserConstants.TOKEN_EXPIRE_TIME);
Map map=new HashMap();
map.put("token", token);
return Result.success(map);
// token, token
String token = req.getHeader(UserConstants.ACCESS_TOKEN);
if (Strings.isNullOrEmpty(token)) {
return false;
}
Object reqToken=redisUtil.get(UserConstants.PREFIX_USER_TOKEN+token);
if (ObjectUtils.isEmpty(reqToken)) {
return false;
}
if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token) <1){
return false;
}
redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, token,UserConstants.TOKEN_EXPIRE_TIME);
return true;
2.이런 방식 은 비밀 로그 인 을 면제 하 는 것 입 니 다.다시 말 하면 로그 인 한 후에 계 정 비밀 번 호 를 통 해 로그 인 하지 않 아 도 됩 니 다.사고방식 은 바로 token 을 생 성 할 때 refToken 을 생 성하 여 새로 고침 하 는 것 입 니 다.예 를 들 어 제 token 설정 의 유효기간 은 5 분 이 고 refToken 설정 은 일주일 입 니 다.그러면 요청 할 때 token 이 만 료 되 었 는 지 판단 합 니 다.만 료 되 었 다 면 refToken 의 시간 이 만 료 되 었 는 지,만 료 되 지 않 았 는 지 판단 하고 새로운 token 을 전단 에 생 성 하 는 동시에 이 refToken 을 리 셋 합 니 다.refToken 이 만 료 되 었 다 면 다시 로그 인 합 니 다.주의해 야 할 것 은 이번에 생 성 된 token 은 redis 에 존재 하지 않 고 refToken 을 redis 에 존재 합 니 다.
// token
String token = JwtUtil.sign(userName,user.getId());
// token,
String refToken=UUID.randomUUID().toString().replaceAll("-","");
redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, refToken,UserConstants.TOKEN_EXPIRE_TIME);
Map map=new HashMap();
map.put("token", token);
map.put("refToken", refToken);
return Result.success(map);
// token, , redis refToken
if (!JwtUtil.verify(token)) {
if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token)>=1){
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
String newRefToken=UUID.randomUUID().toString().replaceAll("-","");
Integer userId=Integer.parseInt(JwtUtil.getUserId(token));
User user=userService.selectOne(userId);
String newToken=JwtUtil.sign(user.getUserName(),user.getId());
httpServletResponse.setHeader("newToken",newToken);
httpServletResponse.setHeader("newRefToken",newRefToken);
return true;
}else{
return false;
}
}
3.내 가 postman 에서 테스트 한 결 과 를 붙인다.로그 인 후 돌아 오 는 token 과 refToken 입 니 다.
로그 인 성공 후 표시:
여 기 는 token 이 만 료 된 후 refToken 이 새로 고침 한 token 입 니 다.
refToken 이 만 료 된 후 접근 할 때 설정 한 디 스 플레이 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.