实操生成JWT,并且将session升级为JWT校验。
@GetMapping("/loginWithJwt")
@ResponseBody
public ApiRestResponse loginWithJwt(@RequestParam String userName, @RequestParam String password) {
if (StringUtils.isEmpty(userName)) {
return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_USER_NAME);
}
if (StringUtils.isEmpty(password)) {
return ApiRestResponse.error(ImoocMallExceptionEnum.NEED_PASSWORD);
}
User user = userService.login(userName, password);
//保存用户信息时,不保存密码
user.setPassword(null);
Algorithm algorithm = Algorithm.HMAC256(Constant.JWT_KEY);
String token = JWT.create()
.withClaim(Constant.USER_NAME, user.getUsername())
.withClaim(Constant.USER_ID, user.getId())
.withClaim(Constant.USER_ROLE, user.getRole())
//过期时间
.withExpiresAt(new