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

黃冈建设厅官方网站百度百家

黃冈建设厅官方网站,百度百家,西局网站建设,义乌网主要做什么了解 JWT Token 释义及使用 | Authing 文档 JSON Web Token Introduction - jwt.io JSON Web Token (JWT,RFC 7519 (opens new window)),是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准((RFC 7519)。该 token 被设计为紧凑…

了解 JWT Token 释义及使用 | Authing 文档

JSON Web Token Introduction - jwt.io

JSON Web Token (JWT,RFC 7519 (opens new window)),是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准((RFC 7519)。该 token 被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该 token 也可直接被用于认证,也可被加密。

1. 认证

传统的Session认证方式需要在服务器端存储用户登录信息,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大。基于Token的认证方式不需要在服务端去保留用户的认证信息或者会话信息。

流程上是这样的:

  • 用户使用用户名密码来请求服务器
  • 服务器进行验证用户的信息
  • 服务器通过验证发送给用户一个token
  • 客户端存储token,并在每次请求时附送上这个token值
  • 服务端验证token值,并返回数据

2. JWT的结构

它采用缩写的形式,包含三个部分,由.分割,包括以下三个部分

  • Header——头部
  • Payload——有效荷载
  • Signature——签名

因此JWT呈现为这种形式:

xxxxx.yyyyy.zzzzz

2.1. Header

头部包含两个部分:(1)token的类型,即JWT;(2)使用的签名算法,如HMAC、SHA256或RSA

例如:

{"alg": "HS256","typ": "JWT"
}

2.2. Payload

该部分包含一些实体和数据的声明,如用户等,包括已注册声明、公开声明、私有声明三类。

例如:

{"sub": "1234567890","name": "John Doe","admin": true
}

2.3. Signature

要创建签名部分,您必须获取编码的标头、编码的有效负载、密钥、标头中指定的算法,然后对其进行签名。

3. 使用

jjwt10:GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android

目前jjwt10以上版本和jjwt9使用方法不同,好像使用jjwt9还是偏多一些。

jjwt9:jjwt 0.9.1 javadoc (io.jsonwebtoken)

以下代码是从mall项目中学习的JWT的工具类,一般可作为模板使用,主要提供了生成token和解析token的API,使用的是jjwt9

@Component
public class JwtTokenUtil {private static final Logger LOGGER = LoggerFactory.getLogger(JwtTokenUtil.class);//sub: subject,主体,即登录的主体,一般是用户名private static final String CLAIM_KEY_USERNAME = "sub";//created表示创建时间private static final String CLAIM_KEY_CREATED = "created";@Value("${jwt.secret}")private String secret;@Value("${jwt.expiration}")private Long expiration;/*** 根据负载生成JWT的token* @param claims 声明,即JWT中的payload部分* @return token:String*/private String generateToken(Map<String, Object> claims) {return Jwts.builder()   //生成一个DefaultJwtBuilder类实例.setClaims(claims)      //设置该DefaultJwtBuilder类实例的claims字段.setExpiration(generateExpirationDate())    //设置过期时间.signWith(SignatureAlgorithm.HS512, secret) //设置签名算法、密钥.compact();     //调用compact函数才能生成JWT}/*** 从token中获取JWT中的负载* @param token* @return Claims类实例*/private Claims getClaimsFromToken(String token) {Claims claims = null;try {claims = Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();} catch (Exception e) {LOGGER.info("JWT格式验证失败:{}",token);}return claims;}/*** 根据expiration生成token的过期时间* @return Date*/private Date generateExpirationDate() {return new Date(System.currentTimeMillis() + expiration * 1000);}/*** 从token中获取登录用户名*/public String getUserNameFromToken(String token) {String username;try {Claims claims = getClaimsFromToken(token);username =  claims.getSubject();} catch (Exception e) {username = null;}return username;}/*** 验证token是否还有效** @param token       客户端传入的token* @param userDetails 从数据库中查询出来的用户信息*/public boolean validateToken(String token, UserDetails userDetails) {String username = getUserNameFromToken(token);return username.equals(userDetails.getUsername()) && !isTokenExpired(token);}/*** 判断token是否已经失效*/private boolean isTokenExpired(String token) {Date expiredDate = getExpiredDateFromToken(token);return expiredDate.before(new Date());}/*** 从token中获取过期时间*/private Date getExpiredDateFromToken(String token) {Claims claims = getClaimsFromToken(token);return claims.getExpiration();}/*** 根据用户信息生成token* @param userDetails UserDetails类实例* @return token*/public String generateToken(UserDetails userDetails) {Map<String, Object> claims = new HashMap<>();claims.put(CLAIM_KEY_USERNAME, userDetails.getUsername());claims.put(CLAIM_KEY_CREATED, new Date());return generateToken(claims);}
}

http://www.gaoduandz.com/news/100.html

相关文章:

  • 科技网站设计公司有哪些朝阳网站seo
  • 属于外贸型的b2b电子商务网站产品推广方案ppt
  • 24小时在线观看seo外链推广工具下载
  • 邯郸中材建设有限责任公司网站网站营销网站营销推广
  • 松江做网站需要多少钱网络营销就是seo正确吗
  • 临沂企业建站系统模板手机如何建网站
  • 学做网站用什么服务器吉林百度seo公司
  • vue做的网站百度抓取女教师遭网课入侵直播录屏曝
  • 做网上商城网站哪家好专业代写软文
  • 海尔电子商务网站建设情况石家庄疫情
  • 接效果图做网站八零云自助建站免费建站平台
  • 网站建设公司怎样做账深圳全网推互联科技有限公司
  • 汕头网站建设百度快照是干什么的
  • 做网站客服去哪应聘贵阳百度seo点击软件
  • 怎样在国外网站上做宣传电子商务营销策划方案
  • 网站关键词怎么做免费seo软件推荐
  • 电商网站支付体系建设特点抖音seo什么意思
  • 校园网上超市网站建设哪些浏览器可以看禁止访问的网站
  • 盘锦网站建设 盘锦建站推广 盘锦建站创建软件平台该怎么做
  • 上海c网站建设谷歌关键词排名查询
  • 客户如何找到做网站宣传的律师郑州seo技术服务顾问
  • 网站建电子商务营销的概念
  • 网页设计图片怎么放进去济宁seo优化公司
  • vs做网站标签输出语言aso优化教程
  • 设计师经常上的网站网站设计开发网站
  • flash 做网站教程百度收录工具
  • 私有云网站建设新品牌推广方案
  • 网站建设及网页设计教案seo外链工具有用吗
  • 找人建设网站关键词排名查询api
  • 贵德县wap网站建设公司怎么建立一个属于自己的网站