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

网站建设面试常见问题媒体发稿

网站建设面试常见问题,媒体发稿,如何用快站做pc端网站,网站建设实训总结范文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/349317/

相关文章:

  • 重庆营销型网站建设价格网站网站做代理赚钱吗
  • 专门帮做ppt的网站吗网络营销推广的主要特点
  • 烟台做外贸网站店面装修设计图片
  • 广州o2o网站建设餐饮网站建设案例
  • 潜山网站建设抖音代运营报价单
  • 网站建设与推广话术邢台信息港聊天室
  • 获取网页 代码 做网站有哪些网站软件可以做网站的原型
  • 招聘去建设网站类网站东莞今天新增加的情况
  • 烟台网站制作软件互联网创业做什么好
  • 网站建设有名的公司办公室装修实景拍摄图
  • 专业做卖菜的网站网站备案不通过
  • 西安长安区建设局网站网站漂浮广告
  • 顺的网站建设信息东莞建筑建设网站建设
  • 电子商务营销师关键词排名优化网站建设公司
  • 韩国网页设计公司网站有经验的大良网站建设
  • 游戏币网站怎么做十堰电商网站建设
  • 旅游网站系统哪个好城市建设投资公司网站
  • 制作图片海报的软件关键词seo公司
  • 济南企业网站推广方法wordpress 类别 排序
  • 深圳网站建设开发公司哪家好wordpress 删除主题作者
  • 网站怎么登陆后台wordpress卡蜜 插件
  • wordpress安装微信登录插件青岛网站seo技巧
  • 燕郊个人做网站超变传奇手游刀刀切割无会员散人
  • 有没有可以做兼职的网站网站建设发展方向有哪些
  • php网站后台上传图片有没有推荐到首页的功能客户求购平台
  • 大型网站的标准莱芜市官网
  • 建站用Wordpress还是青州网站建设青州
  • 百度网站收录更新建网站的公司赚钱吗
  • 哪种语言做网站最快网站大全app下载
  • 手机营销网站制作网站建设备案和免备案的区别