Connectez-vous en utilisant des règles basées sur l'interception simples JETONS (temps d'expiration du jeton peut être fixé Redis propre usage)

1. dépendance des importations
Insérer ici l'image Description

2. La première importation de génération de jetons et des outils de compilation JwtUtil.java (placé à la fin des outils)

Renvoie l'objet 3. Une fois le service utilisateur en fonction de la couche de service générée par une authentification de connexion réussie UUID, un nom d'utilisateur, le nom d'utilisateur comme un jeton (Ne pas utiliser un mot de passe pour générer l'opération secret de jeton) et le jeton résultant est retourné à l'extrémité avant collectivement la figure.

Insérer ici l'image Description

4. L'extrémité avant peut être retiré et le jeton à la première page par localStorage.setItem () peut prendre toute valeur symbolique en utilisant les éléments suivants :( demande ajax ici comme sujets suivants une fonction de rappel réussie)
Insérer ici l'image Description
autres ajax 5. Après une demande de connexion réussie peut utilisé localStorage.getItem ( « token ») a acquis jeton
et le premier jeton est réglé à la demande d'accès à l'intérieur de l'extrémité arrière

Insérer ici l'image Description
en- tête de demande de réglage (Ajax demande de marquage ci - dessous):
Insérer ici l'image Description
Cette demande est transmise à l'extrémité arrière du suiveur

6. L' analyse de l'extrémité arrière de l'intercepteur
1) pour obtenir le premier jeton et détermine si oui ou non il y a un jeton par request.getHead ( « jeton »)
existe détermine si la longueur du divisée jeton 3 parce que je suis ici générée à l' aide de trois username id UUID 3 Si l'attribut de longueur que le travail. ( Dans le cas contraire à l' aide des Redis jeton a confirmé la présence de la libération peut intercepter égal à)
2) après avoir déterminé si jeton peut être compilé dans la mémoire d'acquisition de l'objet (ceci est pour plus de commodité en utilisant l' UUID / id utilisé pour Redis de processus obtenir jeton opérations non valides et d' autres qui utilisent leurs propres Redis étaient sur la ligne)

Insérer ici l'image Description
---------------------------------------- outils JwtUtil ------- -----------------------------------------------
package Frais de pénalité pour COM. fh.util;

importation com.alibaba.fastjson.JSON;
importation com.auth0.jwt.JWT;
importation com.auth0.jwt.JWTVerifier;
importation com.auth0.jwt.algorithms.Algorithm;
importation com.auth0.jwt.interfaces.DecodedJWT;

public class {JwtUtil

private static final String SECRET_KEY = "sd237#@sd!$%sdk-=";

/**
 * 加密生成token
 *
 * @param object 载体信息
 * @param <T>
 * @return
 */
public static <T> String createToken(T object) {
    try {
        final Algorithm signer = Algorithm.HMAC256(SECRET_KEY);//生成签名
        String token = JWT.create()
                .withSubject(JSON.toJSONString(object))//主题,科目
                .sign(signer);
        return token;
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(e.getMessage());
    }
}

/**
 * 解析验证token
 *
 * @param token 加密后的token字符串
 * @return
 */
public static String verifyToken(String token) {
    try {
        Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
        JWTVerifier verifier = JWT.require(algorithm).build();
        DecodedJWT jwt = verifier.verify(token);
        return jwt.getSubject();
    } catch (Exception e) {
        throw new RuntimeException(e.getMessage());
    }
}

}

Publié deux articles originaux · a gagné les éloges 1 · vues 32

Je suppose que tu aimes

Origine blog.csdn.net/qq_45776774/article/details/105007731
conseillé
Classement