当前位置: 首页 > news >正文

西安网站建设 app黄页大全

西安网站建设 app,黄页大全,co域名,企业网站 制作⛰️个人主页: 蒾酒 #x1f525;系列专栏#xff1a;《spring boot实战》 #x1f30a;山高路远#xff0c;行路漫漫#xff0c;终有归途。 目录 前置条件 jwt简介 导依赖 编写jwt工具类 1.配置项直接嵌入代码#xff0c;通过类名.静态方法使用 2.配置项写到… ⛰️个人主页:     蒾酒 系列专栏《spring boot实战》 山高路远行路漫漫终有归途。 目录 前置条件 jwt简介 导依赖 编写jwt工具类 1.配置项直接嵌入代码通过类名.静态方法使用 2.配置项写到application.yml交由spring容器管理依赖注入使用 前置条件 已经初始化好一个spring boot项目且版本为3X项目可正常启动。 作者版本为3.2.2 初始化教程 新版idea创建spring boot项目-CSDN博客文章浏览阅读2.5k次点赞60次收藏66次。本教程对新手小白友好。若根据教程创建出现问题导致失败可下载我提供的源码在文章最后。本教程较新本文使用的工具以及搭建的springboot版本都是很新版本:idea版本如下spring boot 版本如下本教程使用的是汉化后的idea。https://blog.csdn.net/qq_62262918/article/details/135785412?spm1001.2014.3001.5501 jwt简介 JWTJSON Web Token是一种开放标准RFC 7519用于在网络应用间传输和存储信息的一种安全方式。它由三部分组成头部Header、载荷Payload和签名Signature。JWT可以被用作身份验证和授权通过在服务器和客户端之间传递令牌来验证用户的身份并允许访问受保护的资源。由于JWT是基于数字签名的所以可以确保数据的完整性和安全性。它的设计简单、易于实现并且可以跨不同的平台和语言使用。 导依赖 pom.xml: dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency !-- 如果jdk大于1.8则还需导入下面依赖--dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.3.1/version/dependency 注意你的jdk版本如果为1.8导入第一个就行大于1.8就要导入两个。 编写jwt工具类 JWTJSON Web Token工具类在实际开发中通常包含以下一些常用方法 生成JWT用于生成JWT令牌并返回令牌字符串。解析JWT用于解析JWT令牌验证签名并获取其中的声明信息。验证JWT用于验证JWT的有效性包括验证签名、过期时间等。刷新JWT用户还在操作马上要快过期时延长其有效期(无感刷新)。其他辅助方法例如获取JWT中的特定声明信息验证JWT是否包含某个声明等等。 其中生成和解析token是必须的其他方法根据项目需求设计来决定写不写。 1.配置项直接嵌入代码通过类名.静态方法使用 jwt工具类如下 上面五种常用方法已经写好cv过来直接能用。按需修改也可以。 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.Map;/*** author mijiupro*/ public class JwtUtils {private static final String SIGN_KEY mijiu;// 加密密钥private static final long EXPIRE_TIME 12 * 60 * 60 * 1000; //到期时间12小时单位毫秒private static final byte[] SECRET_KEY SIGN_KEY.getBytes(StandardCharsets.UTF_8);/*** 生成token令牌* param claims JWT第二部分负载 payload 中存储的内容* param subject 主题(用户类型)* return token*/public static String generateToken(MapString,Object claims, String subject) {return Jwts.builder().setId(Claims.ID)//设置jti(JWT ID)是JWT的唯一标识根据业务需要这个可以设置为一个不重复的值主要用来作为令牌的唯一标识。.setSubject(mijiu)//设置主题,一般为用户类型.setIssuedAt(new Date())//设置签发时间.addClaims(claims)//设置负载.signWith(SignatureAlgorithm.HS256, SECRET_KEY)//设置签名算法.setExpiration(new Date(System.currentTimeMillis() EXPIRE_TIME))//设置令牌过期时间.compact();//生成令牌}/*** 解析token令牌* param token token令牌* return 负载*/public static Claims parseToken(String token) {return Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody();}/*** 验证token令牌* param token 令牌* return 是否有效*/public static boolean validateToken(String token) {try {Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody();return true;} catch (Exception e) {return false;}}/*** 刷新Token* param token 旧的Token令牌* return 新的Token令牌*/public static String refreshToken(String token) {try {// 解析旧的Token获取负载信息Claims claims parseToken(token);// 生成新的Token设置过期时间和签名算法等参数return generateToken(claims, claims.getSubject());} catch (Exception e) {throw new RuntimeException(无法刷新令牌, e);}}/*** 从令牌中获取主题信息* param token 令牌* return 主题信息(用户类型)*/public static String getSubjectFromToken(String token) {try {Claims claims parseToken(token); // 解析令牌获取负载信息return claims.getSubject(); // 返回主题信息} catch (Exception e) {throw new RuntimeException(无法从令牌中获取主题。, e);}}} 编写测试 测试代码如下 import com.mijiu.commom.util.JwtUtils; import io.jsonwebtoken.Claims; import org.junit.jupiter.api.Test;import java.util.Map;public class JwtTest {Testpublic void testJwt() {// 设置JWT的payloadMapString, Object claims Map.of(username, mijiu, role, admin);// 生成JWTString jwt JwtUtils.generateToken(claims, secret);System.out.println(JWT: jwt);// 解析JWTClaims claims1 JwtUtils.parseToken(jwt);// 获取完整的payloadString payload claims1.toString();System.out.println(Payload: payload);} } 作者目录结构 ​​ 运行测试代码 ​​测试通过 2.配置项写到application.yml交由spring容器管理依赖注入使用 jwt工具类如下 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;import java.util.Date; import java.util.Map;/*** author mijiupro*/ Data Component ConfigurationProperties(prefix jwt) public class JwtUtils {private String secret;//密钥private long expiration;//过期时间/*** 生成token令牌* param claims JWT第二部分负载 payload 中存储的内容* param subject 主题(用户类型)* return token*/public String generateToken(MapString,Object claims, String subject) {return Jwts.builder().setId(Claims.ID)//设置jti(JWT ID)是JWT的唯一标识根据业务需要这个可以设置为一个不重复的值主要用来作为令牌的唯一标识。.setSubject(mijiu)//设置主题,一般为用户类型.setIssuedAt(new Date())//设置签发时间.addClaims(claims)//设置负载.signWith(SignatureAlgorithm.HS256, secret)//设置签名算法.setExpiration(new Date(System.currentTimeMillis() expiration))//设置令牌过期时间.compact();//生成令牌}/*** 解析token令牌* param token token令牌* return 负载*/public Claims parseToken(String token) {return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();}/*** 验证token令牌* param token 令牌* return 是否有效*/public boolean validateToken(String token) {try {Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();return true;} catch (Exception e) {return false;}}/*** 刷新Token* param token 旧的Token令牌* return 新的Token令牌*/public String refreshToken(String token) {try {// 解析旧的Token获取负载信息Claims claims parseToken(token);// 生成新的Token设置过期时间和签名算法等参数return generateToken(claims, claims.getSubject());} catch (Exception e) {throw new RuntimeException(无法刷新令牌, e);}}/*** 从令牌中获取主题信息* param token 令牌* return 主题信息(用户类型)*/public String getSubjectFromToken(String token) {try {Claims claims parseToken(token); // 解析令牌获取负载信息return claims.getSubject(); // 返回主题信息} catch (Exception e) {throw new RuntimeException(无法从令牌中获取主题。, e);}}} 注意此代码用到了lombok的Data注解来添加getter 和 setter 方法请确保有该依赖依赖坐标 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional /dependency 配置文件添加jwt的配置项 application.yml jwt:secret: 123456 #密钥expiration: 43200000 #过期时间 12h ​​ 编写测试类 import com.mijiu.commom.util.JwtUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.HashMap; import java.util.Map;/*** author mijiupro*/RestController RequestMapping(/test) public class TestController {private final JwtUtils jwtUtils;public TestController(JwtUtils jwtUtils) {this.jwtUtils jwtUtils;}GetMapping(/get-token)public String getToken() {MapString, Object claims new HashMap();claims.put(username, mijiu);claims.put(role, admin);return jwtUtils.generateToken(claims,user);}GetMapping(/parse-token/{token})public String parseToken(PathVariable String token) {return jwtUtils.parseToken(token).toString();} } 目录结构 ​​ 启动项目 请求jwt测试接口 生成token接口 ​​ 复制token 请求解析token接口并路径传参传入复制的token ​​ 测试成功。
http://www.pierceye.com/news/726312/

相关文章:

  • 网站有什么到期wordpress怎么编辑保存
  • 服务器添加网站300500启迪设计
  • 上海市建设安全协会网站移动端页面
  • 手机做网站公司成都住房和城乡建设厅官网
  • 锋创科技园网站建设网站开发ide php
  • 山东做网站的公司有哪些电脑怎么制作视频短片
  • 书画网站 建站维护网站成本
  • 什么事网站开发网站服务器租用报价
  • 做黏土的网站青岛网站建设微动力
  • 建网站权威公司广告发布平台
  • 自助游网站开发分析报告总结怎么注册公司微信公众号
  • 网站开发公司业务员培训黄聪wordpress
  • 网站规划与建设ppt模板下载响应式网站模板费用
  • 江苏商城网站建设服务网站建设优化石家庄
  • 高师院校语言类课程体系改革与建设 教学成果奖申报网站wordpress 4.8.2 漏洞
  • 以小说名字做网站的小说网wordpress的数据库主机
  • 永嘉高端网站建设价格h5页面制作多少钱
  • 北京网站建设课程培训WordPress分类id在哪
  • 宁夏网站备案青岛专业网站建设公司
  • 廊坊营销网站团队佛山市创意动力信息科技有限公司
  • 怎么学习做网站网络公司 网站建设
  • 网站权重怎么提升网站开发多线程开发
  • wordpress下拉列表沈阳网站排名优化
  • 非自己的网站如何做二次跳转免费建英文网站
  • 广州建筑集团网站企业大型网站开发网站模板设计
  • 漯河网站推广多少钱做调查网站的问卷哪个给的钱高
  • 局域网下怎么访问自己做的网站做网站时如何将前端连接到后台
  • 网页设计与网站建设考试名词解释长治县网站建设
  • 商务网站建设实训报告总结南京太阳宫网站建设
  • 网站建设合同缴纳印花税吗建设企业网站官网登录