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

网站如何申请微信支付接口佳木斯网站网站建设

网站如何申请微信支付接口,佳木斯网站网站建设,北京的网站建设公司哪家好,东莞seo优化seo关键词目录 一、JWT 1、什么是JWT 2、JWT的组成 3、JJWT签发与验证token 1、创建token 2、解析token 3、设置过期时间 4、自定义claims 前言#xff1a; 在现代Web应用和微服务架构中#xff0c;用户身份验证和信息安全传输是核心问题。JSON Web Token#xff08;J…目录 一、JWT 1、什么是JWT 2、JWT的组成 3、JJWT签发与验证token 1、创建token 2、解析token 3、设置过期时间 4、自定义claims         前言         在现代Web应用和微服务架构中用户身份验证和信息安全传输是核心问题。JSON Web TokenJWT作为一种轻量级的认证机制已成为开发者解决这些问题的重要工具。通过它系统可以实现无状态认证不需要在服务器端存储会话信息既提高了性能又增强了可扩展性。本文将介绍JWT的基本概念、组成部分以及它的token令牌的生成与校验。 一、JWT 1、什么是JWT JWTJSON Web Token是一种开放标准RFC 7519用于在网络应用环境中作为紧凑的、独立的方式安全地传递信息。JWT通常用于用户身份验证和信息交换尤其是在Web应用和微服务架构中。 2、JWT的组成 头部Header通常包含两部分信息算法类型如HMAC SHA256或RSA以及令牌的类型通常是JWT。 头部用于描述关于该JWT的最基本的信息例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。 {typ:JWT,alg:HS256} 在头部指明了签名算法是HS256算法。 我们进行BASE64编码http://base64.xpcha.com/编码后的字符串如下 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 负载Payload包含声明Claims。声明是关于实体通常是用户以及额外数据的信息。声明有三种类型 注册声明这些是JWT规范中推荐的标准声明如iss签发者、exp过期时间、sub主题等。公共声明可以自由定义的声明但需要避免冲突。私有声明是JWT中双方自行约定的声明用于传递应用程序自定义信息。 用白话说负载就是存放有效信息的地方。 定义一个payload: {sub:1234567890,name:John Doe,admin:true} 然后将其进行base64加密得到Jwt的第二部分。 eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9 签名Signature为了确保JWT的安全性使用头部和负载部分再加上一个密钥按照头部中指定的签名算法如HMAC SHA256生成签名。这个签名可以验证消息是否在传输过程中被篡改过。 jwt的第三部分是一个签证信息这个签证信息由三部分组成 header (base64后的) payload (base64后的) secret 这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串然后通过header中声明的加密方式进行加盐secret组合加密然后就构成了jwt的第三部分。 TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 将这三部分用.连接成一个完整的字符串,构成了最终的jwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9. TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ JWT的主要优势是其自包含性信息可以存储在令牌内部服务器不需要保存会话信息从而提高了可扩展性和性能。 3、JJWT签发与验证token JJWT是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License版本2.0)JJWT很容易使用和理解。它被设计成一个以建筑为中心的流畅界面隐藏了它的大部分复杂性。 1、创建token 首先要在项目的pom文件中添加依赖如下 dependency     groupIdio.jsonwebtoken/groupId     artifactIdjjwt/artifactId     version0.9.0/version /dependency 接下来创建测试类代码如下 JwtBuilder builder Jwts.builder().setId(888) //设置唯一编号.setSubject(小白)//设置主题 可以是JSON数据.setIssuedAt(new Date())//设置签发日期.signWith(SignatureAlgorithm.HS256,java);//设置签名 使用HS256算法并设置SecretKey(字符串) //构建 并返回一个字符串 System.out.println( builder.compact() ); 运行打印结果 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1NTc5MDQxODF9.ThecMfgYjtoys3JX7dpx3hu6pUm0piZ0tXXreFU_u3Y 再次运行会发现每次运行的结果是不一样的因为我们的载荷中包含了时间。 2、解析token 我们刚才已经创建了token 在web应用中这个操作是由服务端进行然后发给客户端客户端在下次向服务端发送请求时需要携带这个token这就好像是拿着一张门票一样那服务端接到这个token 应该解析出token中的信息例如用户id,根据这些信息查询数据库返回相应的结果。 String compactJwteyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1NTc5MDQxODF9.ThecMfgYjtoys3JX7dpx3hu6pUm0piZ0tXXreFU_u3Y; ​ Claims claims Jwts.parser().setSigningKey(java).parseClaimsJws(compactJwt).getBody(); ​ System.out.println(claims); 运行打印效果 {jti888, sub小白, iat1557904181} 试着将token或签名秘钥篡改一下会发现运行时就会报错所以解析token也就是验证token。 3、设置过期时间 有很多时候我们并不希望签发的token是永久生效的所以我们可以为token添加一个过期时间。 创建token 并设置过期时间 //当前时间 long currentTimeMillis System.currentTimeMillis(); Date date new Date(currentTimeMillis); JwtBuilder builder Jwts.builder().setId(888) //设置唯一编号.setSubject(小白)//设置主题 可以是JSON数据.setIssuedAt(new Date())//设置签发日期.setExpiration(date).signWith(SignatureAlgorithm.HS256,java);//设置签名 使用HS256算法并设置SecretKey(字符串) //构建 并返回一个字符串 System.out.println( builder.compact() ); 解释 .setExpiration(date)//用于设置过期时间 参数为Date类型数据 运行打印效果如下 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1NTc5MDUzMDgsImV4cCI6MTU1NzkwNTMwOH0.4q5AaTyBRf8SB9B3Tl-I53PrILGyicJC3fgR3gWbvUI 解析TOKEN String compactJwteyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1NTc5MDUzMDgsImV4cCI6MTU1NzkwNTMwOH0.4q5AaTyBRf8SB9B3Tl-I53PrILGyicJC3fgR3gWbvUI; ​ Claims claims Jwts.parser().setSigningKey(java).parseClaimsJws(compactJwt).getBody(); ​ System.out.println(claims); 打印结果 当前时间超过过期时间则会报错。 4、自定义claims         我们刚才的例子只是存储了id和subject两个信息如果你想存储更多的信息例如角色可以定义自定义claims。 创建测试类并设置测试方法 创建token: Test public void createJWT(){//当前时间long currentTimeMillis System.currentTimeMillis();currentTimeMillis1000000L;Date date new Date(currentTimeMillis);JwtBuilder builder Jwts.builder().setId(888) //设置唯一编号.setSubject(小白)//设置主题 可以是JSON数据.setIssuedAt(new Date())//设置签发日期.setExpiration(date)//设置过期时间.claim(roles,admin)//设置角色.signWith(SignatureAlgorithm.HS256,java);//设置签名 使用HS256算法并设置SecretKey(字符串)//构建 并返回一个字符串System.out.println( builder.compact() ); } 运行打印效果 eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1NTc5MDU4MDIsImV4cCI6MTU1NzkwNjgwMiwicm9sZXMiOiJhZG1pbiJ9.AS5Y2fNCwUzQQxXh_QQWMpaB75YqfuK-2P7VZiCXEJI 解析TOKEN: //解析 Test public void parseJWT(){String compactJwteyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiLlsI_nmb0iLCJpYXQiOjE1NTc5MDU4MDIsImV4cCI6MTU1NzkwNjgwMiwicm9sZXMiOiJhZG1pbiJ9.AS5Y2fNCwUzQQxXh_QQWMpaB75YqfuK-2P7VZiCXEJI;Claims claims Jwts.parser().setSigningKey(java).parseClaimsJws(compactJwt).getBody();System.out.println(claims); } 运行效果
http://www.laogonggong.com/news/117925.html

相关文章:

  • 网站是否必须做认证网站没有百度快照
  • 建设网站的群如何开始做婚恋网站
  • 建设集团网站 技术支持中企动力江阴网站建设工作室
  • 安徽圣力建设集团网站装修图片
  • 从事网站建设百度网站首页提交入口
  • 网站设计需求文档范例广州专业做外贸网站建设
  • 幼儿网站源代码建网站要定制还是第三方系统
  • 岳池住房和城乡建设厅网站个人博客网站如何做SEO
  • 石家庄网站建设推广管理课程培训视频教程全集
  • 哪个网站可以卖自己做的模型餐饮网站网页设计代码
  • 灵犀科技 高端网站建设松原做网站平台
  • 长沙网站建设索王道下拉设计者人才网官网
  • 福建网站建设网河南省建设资格注册中心网站
  • 万年县建设银行网站拼音全称建设网站及域名费用
  • 永嘉移动网站建设公司百度知道网页版
  • 石家庄网站到首页排名组建网站需多少钱
  • html网页模板网站模板下载做网站公司如何赚钱
  • 新桥企业网站建设罗湖区seo排名
  • 成都彩票网站开发网络维护网站美工
  • 微网站是官网的手机站wordpress分页 标题
  • 优秀网站优点设计模板在哪里找
  • 百度装修网站界面官方网站
  • 芮城做网站的机构有哪些好的模板网站
  • 哈尔滨建设网站公司吗设置WordPress注册
  • 如何使用mysql数据库做网站深圳知名室内设计公司
  • 怎么做网站架构网站模板下
  • php网站开发周期多长闵行网站建设多久能见效果
  • 校园文化建设网站湛江网站设计哪家好
  • 绍兴企业网站建站模板wordpress开发手册中文
  • 网站界面设计ps关键词可以分为哪三类