在编码中,SpringSecurity框架可以帮助我们获取到存在令牌的用户信息,下面给出一个工具类,让我们更方便的获取到用户信息。
@Slf4j public class SecurityUtil { public static User getUser() { //拿jwt中的用户身份 Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof String){ String jsonString = (String) principal; User user = null; try { user = JSON.parseObject(jsonString, User.class); } catch (Exception e) { log.debug("解析jwt中的用户身份无法转成User对象:{}",jsonString); } return user; } return null; } @Data public static class User implements Serializable { private static final long serialVersionUID = 1L; private String id; private String username; ......//自己的用户信息 private LocalDateTime updateTime; } }
但是该工具类要在接口成的util包下面,不要在service层的util包下面。因为接service层不接令牌!!!