黑马程序员技术交流社区

标题: 【郑州校区】Java的新项目学成在线笔记-day17(六) [打印本页]

作者: 谷粒姐姐    时间: 2019-6-25 15:54
标题: 【郑州校区】Java的新项目学成在线笔记-day17(六)
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









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2