Inhaltsverzeichnis
Methode 1: Holen Sie sich das Token im Anforderungsheader über HttpServletRequest zur Konvertierung
Methode 2: Über die lokale Thread-Variable ThreadLocal
Methode 1: Holen Sie sich das Token im Anforderungsheader über HttpServletRequest zur Konvertierung
HttpServletRequest kann in @Autowired oder als Parameter im Controller eingefügt werden.
//从请求头中拿token
String token = request.getHeader("token");
//用JwtUtil工具 根据 盐 解析token,得到当时放进去的map
Map claims = JwtUtil.parseJWT("salt", token);
//取出map里的userId
Long userId= Long.valueOf(claims.get("userId").toString());
Methode 2: Über die lokale Thread-Variable ThreadLocal
Schreiben Sie zunächst eine Toolklasse BaseContext
public class BaseContext{
//创建线程本地变量
public static final ThreadLocal<Long> threadLocal = new ThreadLocal<>();
//set值
public static void setCurrentId(Long id){
threadLocal.set(id);
}
//取值
public static Long getCurrentId{
return threadLocal.getCurrentId();
}
//删除
public static void removeCurrentId() {
threadLocal.remove();
}
}
Geben Sie gegebenenfalls den Wert ein. Zum Beispiel, nachdem die JWT-Token-Authentifizierung bestanden wurde.
BaseContext.setCurrentId(userId);
Bei Bedarf holen Sie sich den Wert aus der lokalen Variablen des Threads, und fertig.
Long userId = BaseContext.getCurrentId;
Persönlich finde ich diesen Weg eleganter.