日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot整合JWT使用

發布時間:2024/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot整合JWT使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@RestController @Slf4j public class UserController {@Resourceprivate UserService userService;@GetMapping("/user/login")public Map<String, Object> login(User user) {log.info("用戶名:{}", user.getName());log.info("password: {}", user.getPassword());Map<String, Object> map = new HashMap<>();try {User userDB = userService.login(user);Map<String, String> payload = new HashMap<>();payload.put("id", userDB.getId());payload.put("name", userDB.getName());String token = JWTUtils.getToken(payload);map.put("state", true);map.put("msg", "登錄成功");map.put("token", token);return map;} catch (Exception e) {e.printStackTrace();map.put("state", false);map.put("msg", e.getMessage());map.put("token", "");}return map;}@PostMapping("/user/test")public Map<String, Object> test(HttpServletRequest request) {String token = request.getHeader("token");DecodedJWT verify = JWTUtils.verify(token);String id = verify.getClaim("id").asString();String name = verify.getClaim("name").asString();log.info("用戶id:{}", id);log.info("用戶名: {}", name);//TODO 業務邏輯Map<String, Object> map = new HashMap<>();map.put("state", true);map.put("msg", "請求成功");return map;}} @RestController @Slf4j public class UserController {@Resourceprivate UserService userService;@GetMapping("/user/login")public Map<String, Object> login(User user) {log.info("用戶名:{}", user.getName());log.info("password: {}", user.getPassword());Map<String, Object> map = new HashMap<>();try {User userDB = userService.login(user);Map<String, String> payload = new HashMap<>();payload.put("id", userDB.getId());payload.put("name", userDB.getName());String token = JWTUtils.getToken(payload);map.put("state", true);map.put("msg", "登錄成功");map.put("token", token);return map;} catch (Exception e) {e.printStackTrace();map.put("state", false);map.put("msg", e.getMessage());map.put("token", "");}return map;}@PostMapping("/user/test")public Map<String, Object> test(HttpServletRequest request) {String token = request.getHeader("token");DecodedJWT verify = JWTUtils.verify(token);String id = verify.getClaim("id").asString();String name = verify.getClaim("name").asString();log.info("用戶id:{}", id);log.info("用戶名: {}", name);//TODO 業務邏輯Map<String, Object> map = new HashMap<>();map.put("state", true);map.put("msg", "請求成功");return map;}} @Configuration public class InterceptorConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new JWTInterceptor()).addPathPatterns("/user/test").excludePathPatterns("/user/login");} } @Slf4j public class JWTInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {//獲取請求頭中的令牌String token = request.getHeader("token");log.info("當前token為:{}", token);Map<String, Object> map = new HashMap<>();try {JWTUtils.verify(token);return true;} catch (SignatureVerificationException e) {e.printStackTrace();map.put("msg", "簽名不一致");} catch (TokenExpiredException e) {e.printStackTrace();map.put("msg", "令牌過期");} catch (AlgorithmMismatchException e) {e.printStackTrace();map.put("msg", "算法不匹配");} catch (InvalidClaimException e) {e.printStackTrace();map.put("msg", "失效的payload");} catch (Exception e) {e.printStackTrace();map.put("msg", "token無效");}map.put("state", false);//響應到前臺: 將map轉為jsonString json = new ObjectMapper().writeValueAsString(map);response.setContentType("application/json;charset=UTF-8");response.getWriter().println(json);return false;} }

總結

以上是生活随笔為你收集整理的springboot整合JWT使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。