Integrar JWT para generar token

JWT genera token

La herramienta
JWT JWT (Json Web Token) es un estándar abierto basado en JSON para transferir notificaciones entre entornos de aplicaciones web.
Los reclamos de JWT generalmente se usan para transferir información de identidad de usuario autenticado entre proveedores de identidad y proveedores de servicios para obtener recursos de los servidores de recursos. por ejemplo, para el inicio de sesión del usuario

El papel más importante de JWT es el efecto antifalsificación de la información del token.

El principio de JWT,
un JWT consta de tres partes: la parte pública, la parte privada y la parte de firma. Finalmente, JWT se obtiene mediante la codificación base64 de la combinación de estos tres.

1. La parte pública
está relacionada principalmente con los parámetros de configuración del JWT, como el algoritmo de encriptación de la firma, tipo de formato, tiempo de caducidad, etc.
Clave=ATGUIGU
2. Parte privada
Contenido definido por el usuario, información a encapsular según las necesidades reales.
userInfo{Id del usuario, apodo del usuario nickName}
3. Parte de la firma
SaltiP: dirección IP del servidor actual {IP del servidor proxy configurado en Linux} Cuando el
usuario principal genera una cadena para el JWT, cifra el {salt value}
y finalmente consiste en key+salt+userInfo token!La
codificación base64 no es encriptación, sino que simplemente convierte la información de texto sin formato en una cadena invisible. Pero, de hecho, puede descifrar la codificación base64 en texto sin formato con algunas herramientas, así que no ponga información privada en JWT.
5.2 Integre JWT
1 y agregue dependencias en el módulo de utilidad común pom.xml

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
</dependency>

La versión se ha agregado 2 en el módulo principal yygh-parent pom.xml
, y la clase JwtHelper está escrita en el módulo common-util

public class JwtHelper {
    
    
    private static long tokenExpiration = 24*60*60*1000;
    private static String tokenSignKey = "123456";

    public static String createToken(Long userId, String userName) {
    
    
        String token = Jwts.builder()
                .setSubject("YYGH-USER")
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
                .claim("userId", userId)
                .claim("userName", userName)
                .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                .compressWith(CompressionCodecs.GZIP)
                .compact();
        return token;
    }
    public static Long getUserId(String token) {
    
    
        if(StringUtils.isEmpty(token)) return null;
        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        Integer userId = (Integer)claims.get("userId");
        return userId.longValue();
    }
    public static String getUserName(String token) {
    
    
        if(StringUtils.isEmpty(token)) return "";
        Jws<Claims> claimsJws 
= Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        return (String)claims.get("userName");
    }
    public static void main(String[] args) {
    
    
        String token = JwtHelper.createToken(1L, "55");
        System.out.println(token);
        System.out.println(JwtHelper.getUserId(token));
        System.out.println(JwtHelper.getUserName(token));
    }
}

Descripción: Ejecute la prueba del método principal
5.3 Mejore la interfaz del servicio de inicio de sesión
y modifique el método de inicio de sesión de la clase UserInfoServiceImpl

public Map<String, Object> loginUser(LoginVo loginVo) {
    
    
  …………
    //jwt生成token字符串
    String token = JwtHelper.createToken(userInfo.getId(), name);
    map.put("token",token);
    return map;
}

Supongo que te gusta

Origin blog.csdn.net/david2000999/article/details/122250422
Recomendado
Clasificación