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

和平县做网站手机自助建站系统

和平县做网站,手机自助建站系统,网页制作工具可分为哪两大类,韩语网站建设注意事项JWT#xff1a; JSON Web Token 1. jwt概述 用户登录成功后#xff0c;服务端 如何知道客户端的每次请求对应的是哪个用户呢#xff1f;怎么做#xff1a;目前有两种方式实现. 1.1. 一是通过sessionId的方式#xff0c;登录成功后服务端返回sessionId给客户端#xff0…JWT JSON Web Token 1. jwt概述 用户登录成功后服务端 如何知道客户端的每次请求对应的是哪个用户呢怎么做目前有两种方式实现. 1.1. 一是通过sessionId的方式登录成功后服务端返回sessionId给客户端然后浏览器将sessionId保存在Cookie中这样每次浏览器请求的时候都带上sessionId通过sessionId就能在服务端找到对应的session就能知道是哪个用户。 session里记录了用户的相关信息登录时间等 1.2. 二是用户登录成功后服务端根本就不存用户的session信息用户登录成功后服务端将用户的信息返回给客户端客户端自己保存用户信息然后每次客户端请求的时候将用户信息传给服务端这就是jwt的原理。 2. JWT 的原理 JWT 的原理是服务器认证以后生成一个 JSON 对象发回给用户就像下面这样。 {name: jack,role: admin,id: 123456 }以后用户与服务端通信的时候都要发回这个 JSON 对象。服务器完全只靠这个对象认定用户身份。为了防止用户篡改数据服务器在生成这个对象的时候会加上签名详见后文。 服务器就不保存任何 session 数据了也就是说服务器变成无状态了从而比较容易实现扩展。 3. jwt数据结构 jwt是一个很长的字符串中间用点.分隔成三个部分。注意JWT 内部是没有换行的这里只是为了便于展示将它写成了几行。 JWT 的三个部分依次如下。 Header头部Payload负载Signature签名 类似这样的 3.1 Header Header 部分是一个 JSON 对象描述 JWT 的元数据通常是下面的样子。 {alg: HS256,typ: JWT }上面代码中alg属性表示签名的算法algorithm默认是 HMAC SHA256写成 HS256typ属性表示这个令牌token的类型typeJWT 令牌统一写为JWT。 最后将上面的 JSON 对象使用 Base64URL 算法详见后文转成字符串。 3.2 Payload Payload 部分也是一个 JSON 对象用来存放实际需要传递的数据。JWT 规定了7个官方字段供选用。 iss (issuer)签发人exp (expiration time)过期时间sub (subject)主题aud (audience)受众nbf (Not Before)生效时间iat (Issued At)签发时间jti (JWT ID)编号 除了官方字段你还可以在这个部分定义私有字段下面就是一个例子。 {sub: 1234567890,username: John Doe,userId: 123654 }注意JWT 默认是不加密的任何人都可以读到所以不要把秘密信息放在这个部分。 这个 JSON 对象也要使用 Base64URL 算法转成字符串。 3.3 Signature Signature 部分是对前两部分的签名防止数据篡改。 首先需要指定一个密钥secret。这个密钥只有服务器才知道不能泄露给用户。然后使用 Header 里面指定的签名算法默认是 HMAC SHA256按照下面的公式产生签名。 HMACSHA256(base64UrlEncode(header) . base64UrlEncode(payload),secret)算出签名以后把 Header、Payload、Signature 三个部分拼成一个字符串每个部分之间用点.分隔就可以返回给用户。 3.4 Base64URL 前面提到Header 和 Payload 串型化的算法是 Base64URL。这个算法跟 Base64 算法基本类似但有一些小的不同。 JWT 作为一个令牌token有些场合可能会放到 URL比如 api.example.com/?tokenxxx。Base64 有三个字符、/和在 URL 里面有特殊含义所以要被替换掉被省略、替换成-/替换成_ 。这就是 Base64URL 算法。 4、 使用 jwt  客户端收到服务器返回的 JWT可以储存在 Cookie 里面也可以储存在 localStorage。 此后客户端每次与服务器通信都要带上这个 JWT。你可以把它放在 Cookie 里面自动发送但是这样不能跨域所以更好的做法是放在 HTTP 请求的头信息Authorization字段里面。 类似这样这些数据传输 Authorization: Bearer token 5、 自定义实现jwt  说了这么多结下来我们自己来实现定义一个jwt数据的生成jwt数据的解码工作通过目前市面上开源的java-jwt jar包还是很方便的 import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.exceptions.TokenExpiredException; import com.auth0.jwt.interfaces.DecodedJWT; import com.gfm.asset.base.exception.InteractException; import lombok.SneakyThrows; import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory;/*** author xxx */ public class JwtHelper {private static final Logger logger LoggerFactory.getLogger(JwtHelper.class);/*** 密钥加密token*/SneakyThrowspublic static String generateToken(String userKey, String secretKey, int expire) {Algorithm algorithm Algorithm.HMAC256(secretKey);String token JWT.create().withIssuer(userKey).withIssuedAt(new Date()).withExpiresAt(DateTime.now().plusSeconds(expire).toDate()).sign(algorithm);logger.info( 生成jwtToken, userKey{},secretKey{},过期时间{}s,token{}, userKey, secretKey, expire, token);return token;}/*** 公钥解析token*/public static String parserToken(String token, String secretKey) {try {Algorithm algorithm Algorithm.HMAC256(secretKey);DecodedJWT jwt JWT.require(algorithm).build().verify(token);return jwt.getIssuer();} catch (TokenExpiredException e) {throw new InteractException(token has expired);} catch (Exception e) {e.printStackTrace();throw new InteractException(token is invalid);}}public static void main(String[] args) { String userKey center_sys;String secretKey center_sys#$;String token generateToken(userKey, secretKey, 60 * 60 * 24 * 7);System.out.println(token); // String key parserToken(token, secretKey); // System.out.println(key);}} pom.xml文件 dependencygroupIdcom.auth0/groupIdartifactIdjava-jwt/artifactIdversion3.19.1/versionexclusionsexclusiongroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactId/exclusion/exclusions/dependency 参考 JSON Web Token 入门教程 - 阮一峰的网络日志
http://www.zqtcl.cn/news/606220/

相关文章:

  • 郑州公司网站设计深圳福田有哪些公司
  • 怎么看网站是谁做的asp企业网站开发技术
  • 传奇手游网站大全9377编辑器wordpress
  • 网站集约化建设意见和建议苏州建设交通招聘信息网站
  • 网站建设优化的技巧衣服定制的app有哪些
  • 营销型网站建设报价vue本地访问服务器跨域
  • 支持api网站开发大疆网站建设
  • 国家排污许可网站台账怎么做进销存永久免费
  • 做游戏脚本的网站精品国内网站建设
  • 好的网站建站公司门户网站栏目维护建设方案
  • 如何在电脑上建立网站企业百度网站怎么做的
  • 34线城市做网站推广网站页面如何设计图
  • 成都网站建设前十广州开发网站设计
  • qq人脸解冻自助网站加工平台推荐
  • 中国室内设计联盟网官网网站专题页优化
  • 设计模板图热狗网站关键词优化
  • 无锡网站开发公司重庆网站有哪些
  • 做网站找什么公司工作网站开发思维导图内容
  • 有人知道做网站吗?wordpress多站点cdn
  • 网站风格特点大型外包公司有哪些
  • 如何网站seo用asp做网站有哪控件
  • 网站建设需要哪些成本wordpress商城建站教程
  • 做网络的网站很重要吗网站认证费用
  • flash网站项目背景网页截图快捷键可拉动
  • 郑州企业建设网站北京企业网站模板建站开发
  • 宣传旅游网站建设的观点是什么公众号怎么推广和引流
  • 企业网站制作多少钱山西网络营销方案
  • 焦作住房和城乡建设局网站旅行网站模板
  • 男做基视频网站国家重点高新技术企业名单
  • 公司官方网站开发网站建设电子商务