学习实战项目vue-blog,测试登录接口用不存在的用户名登录,后台报空指针异常,因为后端要根据用户名查询数据库中的用户信息,若用户存在,再比对密码,这里没有用if(user!=null),而采取使用断言的方式在全局异常类中进行处理,但是报了空指针,检查代码原来是断言写错了
错误代码
@PostMapping("/login")
public Result login(@RequestBody LoginDto loginDto ,HttpServletResponse response){
User user = userService.getOne(new QueryWrapper<User>().eq("username",loginDto.getUsername()));
Assert.isNull(user,"用户不存在");
if(!user.getPassword().equals(SecureUtil.md5(loginDto.getPassword()))){
return Result.fail("密码不正确");
}
//用户名密码正确后 生成jwt
String jwt = jwtUtils.generateToken(user.getId());
response.setHeader("Authorization",jwt);
......
断言应该是
Assert.notNull(user,"用户不存在");
表示如果断言正确(即不为空时才往下执行);之前的是为空才往下执行 明显是错了。