东阳网站建设软件开发,网站图片地址怎么做的,网站建设案例分析,wordpress加载速度太慢按照企业的项目然后写的小demo#xff0c; 自己搞一个登录接口然后调用jwtUtil工具类
后端实现
创建一个通用模块common来实现jwt生成token 登录注册的基本实现逻辑思路 面试| ProcessOn免费在线作图,在线流程图,在线思维导图 注释挺详细的jwtUtil工具类#xff0c; 封装的…按照企业的项目然后写的小demo 自己搞一个登录接口然后调用jwtUtil工具类
后端实现
创建一个通用模块common来实现jwt生成token 登录注册的基本实现逻辑思路 面试| ProcessOn免费在线作图,在线流程图,在线思维导图 注释挺详细的jwtUtil工具类 封装的类直接在你的登录login中调用里面的方法 进行传参
登录校验生成token以及怎么使用token拿到对应的值 三个方法
package com.javawa.train.common.util;import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.json.JSONObject;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.HashMap;
import java.util.Map;public class JwtUtil {private static final Logger LOG LoggerFactory.getLogger(JwtUtil.class);/*** 盐值很重要不能泄漏且每个项目都应该不一样可以放到配置文件中*/private static final String key zhou; // 这个就是所说的 秘钥 每个项目不一样/*** 生成 token* param id* param mobile* return*/public static String createToken(Long id, String mobile) {DateTime now DateTime.now();//DateTime expTime now.offsetNew(DateField.HOUR, 24);// 24小时MapString, Object payload new HashMap();// 签发时间payload.put(JWTPayload.ISSUED_AT, now);// 过期时间payload.put(JWTPayload.EXPIRES_AT, expTime);// 生效时间payload.put(JWTPayload.NOT_BEFORE, now);// 内容payload.put(id, id);payload.put(mobile, mobile);System.out.println(payload);System.out.println(key.getBytes());String token JWTUtil.createToken(payload, key.getBytes());LOG.info(生成JWT token{}, token);return token;}/*** 校验 token 就是将请求头中 token进行比较* param token* return*/public static boolean validate(String token) {JWT jwt JWTUtil.parseToken(token).setKey(key.getBytes());// validate包含了verifyboolean validate jwt.validate(0);LOG.info(JWT token校验结果{}, validate);return validate;}/*** 通过 token拿到值* param token* return*/public static JSONObject getJSONObject(String token) {JWT jwt JWTUtil.parseToken(token).setKey(key.getBytes());JSONObject payloads jwt.getPayloads();payloads.remove(JWTPayload.ISSUED_AT);payloads.remove(JWTPayload.EXPIRES_AT);payloads.remove(JWTPayload.NOT_BEFORE);LOG.info(根据token获取原始内容{}, payloads);return payloads;}/*** 可以自己验证一下可以不可以成功* param args*/public static void main(String[] args) {createToken(1L, 123); // id mobile 实体类String token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE3MDIyODY2ODYsIm1vYmlsZSI6IjEyMyIsImlkIjoxLCJleHAiOjE3MDIzNzMwODYsImlhdCI6MTcwMjI4NjY4Nn0.ZFXvFJQ_3YbqSWcMSwHUq3eH3GvBVcxSruZWMG1bfW4;validate(token);getJSONObject(token);}
}然后就是用户提交请求的时候需要携带Token信息然后我们在controller中处理请求之前需要对token做出校验。如果验证通过就继续处理请求否则就拦截该请求。
将生成的token与 main方法中进行比对 主要是业务逻辑有点复杂实现起来其实很简单