1. dépendance des importations
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.
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)
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
en- tête de demande de réglage (Ajax demande de marquage ci - dessous):
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)
---------------------------------------- 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());
}
}
}