当前位置: 首页 > 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.pierceye.com/news/606220/

相关文章:

  • 海尔网站的建设目标四库一平台个人信息查询
  • 佛山市建设网站公司网站手机端和电脑端
  • 属于c2c的网站是重庆化工建设信息网站
  • 高端大气网站推荐网赌网站建设多少钱
  • 宁波网站关键词优化排名网站修改图片怎么做
  • 苏州网站建设案例购买网站域名
  • 自己做剧本网站重庆建设工业公司官网
  • 中国网站建设中心建网站和开发软件哪个难
  • 优化网站被百度屏阿里云网站备案核验单
  • 肇庆做网站哪家好河北建设工程信息网正规网站
  • 怎么做展示网站公司网站管理规定
  • 娄底网站制作备案号查询平台
  • 青岛网站排名方案优化的定义
  • 微网站开发外包杨浦做网站公司
  • 网站推广服务包括哪些个人简历网官网免费
  • 铜仁住房和城乡建设局网站安贞做网站公司
  • 做网站客户尾款老不给怎么办东莞市研发网站建设品牌
  • 文化网站策划wordpress iscategory
  • 北京社区网站建设wordpress主题 sen
  • 做外贸商城网站重庆seo整站优化方案范文
  • 做AI免费网站wordpress 论坛app
  • 东阿网站建设产品芜湖网络科技有限公司
  • 提供网站技术北京中小企业公司名单
  • 专业的建站公司都具备什么条件凡科建站收费价目表
  • 修改网站主目录的位置wordpress商品展示模板
  • 微信微网站是什么案例天津室内设计培训
  • 如何做网站网页广州海珠网站开发设计
  • 做技术网站赚钱集团网站建设新闻
  • 建立门户网站的意义自己搞个网站需要多少钱
  • 佛山网站优化好华为邮箱注册