您现在的位置是:主页 > news > 网站模板修改工具/软文广告示范
网站模板修改工具/软文广告示范
admin2025/4/30 18:33:36【news】
简介网站模板修改工具,软文广告示范,wordpress 文章链接失效,安康手机网站建设1.JWT JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 2.优点 1.无状态 2.有效避免了CSRF 攻击(跨…
网站模板修改工具,软文广告示范,wordpress 文章链接失效,安康手机网站建设1.JWT
JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。
2.优点
1.无状态 2.有效避免了CSRF 攻击(跨…
1.JWT
JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。
2.优点
1.无状态
2.有效避免了CSRF 攻击(跨站请求伪造,属于网络攻击领域范围)
3.适合移动端应用
4.单点登录友好(SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。)
@Slf4j
public class JwtUtil {//过期时间 30minprivate static final int EXPIRE_TIME = 30;//私钥private static final String TOKEN_SECRET = "privateKey";//可以自定义/*** 签发对象:这个用户的id* 签发时间:现在* 有效时间:30分钟* 载荷内容:暂时设计为:这个人的名字* 加密密钥:这个人的id加上一串字符串* @param userId* @return*/public static String createToken(Long userId,List<String> authStrList) {// 算出一个超时的时间Calendar nowTime = Calendar.getInstance();nowTime.add(Calendar.MINUTE,EXPIRE_TIME);Date expiresDate = nowTime.getTime();return JWT.create().withAudience(userId+"") //签发对象.withIssuedAt(new Date()) //发行时间.withExpiresAt(expiresDate) //有效时间// authStrList=> 转json 存储 => 尝试fastjson(阿里开源的一个json转化工具)
// .withClaim(USER_NAME, userName) //载荷,随便写几个都可以.sign(Algorithm.HMAC256(userId+TOKEN_SECRET)); //加密}/*** 检验合法性,其中secret参数就应该传入的是用户的id* @param token*/public static boolean verifyToken(String token, String secret){try {JWTVerifier verifier = JWT.require(Algorithm.HMAC256(secret+TOKEN_SECRET)).build();verifier.verify(token);} catch (Exception e) {//效验失败//自定义的一个异常log.error("token校验失败",e);return false;}return true;}/*** 获取签发对象 => userId*/public static String getAudience(String token){String audience = null;try {audience = JWT.decode(token).getAudience().get(0);} catch (JWTDecodeException j) {//这里是token解析失败log.error("token解析失败",j);return null;}return audience;}/*** 获取签发对象 => userId*/public static List<String> getClaim(String token, String key){try {Claim claim = JWT.decode(token).getClaim("key");// 转化成对应类型 。。。} catch (JWTDecodeException j) {//这里是token解析失败log.error("token解析失败",j);return null;}return null;}}
3.使用
在登录controller中,其中要注意你的user必须有token这个属性
// 视图字段:用户令牌信息@TableField(exist=false)private String token;// 视图字段:权限信息@TableField(exist=false)private List<String> authStrList;
List<String> authStrList = userService.getAuthStrListByUserId(userDb.getId());// 权限信息存储到用户信息中userDb.setAuthStrList(authStrList);String token = JwtUtil.createToken(userDb.getId(),authStrList);userDb.setToken(token);