2.2 jwt查询接口
2.2.1 需求分析
认证服务对外提供jwt查询接口,流程如下:
1、客户端携带cookie中的身份令牌请求认证服务获取jwt
2、认证服务根据身份令牌从redis中查询jwt令牌并返回给客户端。
2.2.2 API
在认证模块定义 jwt查询接口:
[AppleScript] 纯文本查看 复制代码 @Api(value = "jwt查询接口",description = "客户端查询jwt令牌内容") public interface AuthControllerApi {
@ApiOperation("查询userjwt令牌")
public JwtResult userjwt();
....
2.2.3 Dao
无 2.2.4 Service
在AuthService中定义方法如下:
[AppleScript] 纯文本查看 复制代码 //从redis查询令牌
public AuthToken getUserToken(String token){
String userToken = "user_token:"+token;
String userTokenString = stringRedisTemplate.opsForValue().get(userToken);
if(userToken!=null){
AuthToken authToken = null;
try {
authToken = JSON.parseObject(userTokenString, AuthToken.class);
} catch (Exception e) {
LOGGER.error("getUserToken from redis and execute JSON.parseObject error {}",e.getMessage());
e.printStackTrace();
}
return authToken;
}
return null;
}
2.2.5 Controller
[AppleScript] 纯文本查看 复制代码 @Override
@GetMapping("/userjwt")
public JwtResult userjwt() {
//获取cookie中的令牌
[AppleScript] 纯文本查看 复制代码 String access_token = getTokenFormCookie();
//根据令牌从redis查询jwt
AuthToken authToken = authService.getUserToken(access_token);
if(authToken == null){
return new JwtResult(CommonCode.FAIL,null);
}
return new JwtResult(CommonCode.SUCCESS,authToken.getJwt_token());
}
//从cookie中读取访问令牌
private String getTokenFormCookie(){
Map<String, String> cookieMap = CookieUtil.readCookie(request, "uid");
String access_token = cookieMap.get("uid");
return access_token;
}
2.2.6 测试
使用postman测试
1、请求 /auth/userlogin
|