黑马程序员技术交流社区

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

作者: 谷粒姐姐    时间: 2019-6-25 15:14
标题: 【郑州校区】Java的新项目学成在线笔记-day17(三)
1.2.5.4  解析申请令牌错误信息
当账号输入错误应该返回用户不存在的信息,当密码错误要返回用户名或密码错误信息,业务流程图如下:

修改申请令牌的程序解析返回的错误: 由于restTemplate收到400或401的错误会抛出异常,而spring security针对账号不存在及密码错误会返回400及 401,所以在代码中控制针对400或401的响应不要抛出异常。

[AppleScript] 纯文本查看 复制代码
 ...... Map map = null; try {  
     ((RestTemplate) restTemplate).setErrorHandler(new DefaultResponseErrorHandler() {  
       @Override   
      public void handleError(ClientHttpResponse response) throws IOException {  
           // 设置 当响应400和401时照常响应数据,不要报错   
          if (response.getRawStatusCode() != 400 && response.getRawStatusCode() != 401 ) {   
             super.handleError(response);      
       }  
       }  
   });   
//http请求spring security的申请令牌接口   
  ResponseEntity<Map> mapResponseEntity = restTemplate.exchange(path, HttpMethod.POST, new  HttpEntity<MultiValueMap<String, String>>(formData, header), Map.class);     
map = mapResponseEntity.getBody();
  } catch (Exception e) {  
   e.printStackTrace();   
LOGGER.error("request oauth_token_password error: {}",e.getMessage());  
   e.printStackTrace();   
  ExceptionCast.cast(AuthCode.AUTH_LOGIN_APPLYTOKEN_FAIL);
}  
if(map == null ||   
     map.get("access_token") == null ||   
     map.get("refresh_token") == null ||     
    map.get("jti") == null){//jti是jwt令牌的唯一标识作为用户身份令牌   
  //获取spring security返回的错误信息

[AppleScript] 纯文本查看 复制代码
String error_description = (String) map.get("error_description");  
   if(StringUtils.isNotEmpty(error_description)){     
    if(error_description.equals("坏的凭证")){     
        ExceptionCast.cast(AuthCode.AUTH_CREDENTIAL_ERROR);      
   }else if(error_description.indexOf("UserDetailsService returned null")>=0){      
       ExceptionCast.cast(AuthCode.AUTH_ACCOUNT_NOTEXISTS);   
      }  
   }  
   ExceptionCast.cast(AuthCode.AUTH_LOGIN_APPLYTOKEN_FAIL);
} ......

用户不存在:


1.2.5.5  测试
使用postman请求http://localhost:40400/auth/userlogin 1、输入正确的账号和密码进行测试
从数据库找到测试账号,本课程所提供的用户信息初始密码统一为111111 2、输入错误的账号和密码进行测试







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