Java的新项目学成在线笔记-day17(三)

1.2.5.4  解析申请令牌错误信息 
当账号输入错误应该返回用户不存在的信息,当密码错误要返回用户名或密码错误信息,业务流程图如下:
 
修改申请令牌的程序解析返回的错误: 由于restTemplate收到400或401的错误会抛出异常,而spring security针对账号不存在及密码错误会返回400及 401,所以在代码中控制针对400或401的响应不要抛出异常。
 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

...... Map map = null; try { 

     ((RestTemplate) restTemplate).setErrorHandler(new DefaultResponseErrorHandler() { 

       @Override  

      public void handleError(ClientHttpResponse response) throws IOException { 

           // 设置 当响应400401时照常响应数据,不要报错  

          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] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

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、输入错误的账号和密码进行测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值