jwt withsubject

用户发起登录请求,服务端创建一个加密后的jwt信息,作为token返回值,在后续请求中jwt信息作为请求头,服务端正确解密后可获取到存储的用户信息,表示验证通过;解密失败说明token无效或者已过期。
加密后jwt信息如下所示,是由.分割的三部分组成,分别为Header、Payload、Signature。
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJqd3QiLCJpYXQiOjE0NzEyNzYyNTEsInN1YiI6IntcInVzZXJJZFwiOjEsXCJyb2xlSWRcIjoxfSIsImV4cCI6MTQ3MTMxOTQ1MX0.vW-pPSl5bU4dmORMa7UzPjBR0F6sqg3n3hQuKY8j35o

Header包含两部分信息,alg指加密类型,可选值为HS256、RSA等等,typ=JWT为固定值,表示token的类型。
{
"alg": "HS256",
"typ": "JWT"
}

Payload是指签名信息以及内容,一般包括iss (发行者), exp (过期时间), sub(用户信息), aud (接收者),以及其他信息,详细介绍请参考官网。
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}

Signature则为对Header、Payload的签名。
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

在jwt官网,可以看到有不同语言的实现版本,这里使用的是Java版的jjwt。话不多说,直接看代码,加解密都很简单:
/**
* 创建 jwt
* @param id
* @param subject
* @param ttlMillis
* @return
* @throws Exception
*/
public String createJWT(String id, String subject, long ttlMillis) throws Exception {
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256 ;
long nowMillis = System. currentTimeMillis();
Date now = new Date( nowMillis);
SecretKey key = generalKey();
JwtBuilder builder = Jwts. builder()
.setId(id)
.setIssuedAt(now)
.setSubject(subject)
.signWith(signatureAlgorithm, key);
if (ttlMillis >= 0){
long expMillis = nowMillis + ttlMillis;
Date exp = new Date( expMillis);
builder.setExpiration( exp);
}
return builder.compact();
}

/**
* 解密 jwt
* @param jwt
* @return
* @throws Exception
*/
public Claims parseJWT(String jwt) throws Exception{
SecretKey key = generalKey();
Claims claims = Jwts. parser()
.setSigningKey( key)
.parseClaimsJws( jwt).getBody();
return claims;
}

加解密的key是通过固定字符串转换而生成的;subject为用户信息的json字符串;ttlMillis是指token的有效期,时间较短,需要定时更新。
这里要介绍的token刷新方式,是在生成token的同时生成一个有效期较长的refreshToken,后续由客户端定时根据refreshToken来获取最新的token。浏览器与服务端之间建立sse(server send event)请求,来实现刷新。关于sse在前面博文中有介绍过,此处略过不提。passport只是一个用来验证的库,而jwt是一种规范。
喜欢阅读
  • 纪少的恃宠娇妻

    纪少的恃宠娇妻

    为了完成母亲临死前千叮咛万嘱咐的遗愿,傅语沉同意替嫁给纪亦泽,谁知大婚后就被父亲傅兴安下了药,一心算盘着自己的退路,一边要想办法让他同意和傅兴安合作……

  • 情意绵绵:许你深情尽余欢

    情意绵绵:许你深情尽余欢

    天色黯淡下来,就是赛车手的天堂。飘雪的冬日,炙热的夏天,天大的恩仇,缠绵的情愫。到底谁是幕后主使,到底是谁在背叛……

  • 霍先生婚后再爱

    霍先生婚后再爱

    为了跟霍靳琛结婚,沈微雨用尽了手段,换来的却只有情敌的挑衅和一纸孕书。她终于忍无可忍决定离婚,冷落了她三年的丈夫冷漠一笑,“除非死,否则你这辈子都别想离婚!”死?不久后,媒体铺天盖地的报道着,霍氏总裁隐婚三年的妻子立下遗嘱,此生不再踏进霍家大门!

  • 强势宠爱:娇妻,乖一点!

    强势宠爱:娇妻,乖一点!

    公司倒闭,父母遇害,商业王国一夜倾塌。她步步为营,讨得他的疯狂宠爱,两人在感情的旋涡中越陷越深……被仇恨蒙蔽双眼的她盗取公司机密,亲手毁了他的公司结果却发现这是一场天大的误会,可大错已铸成……

  • 富可敌国

    富可敌国

    女友因为我穷给我戴了一顶绿帽,却不知家族禁令提前解除,现在的我富可敌国。

  • 美妙心灵·华丽转身

    美妙心灵·华丽转身

    这是关于一个有故事的农村姑娘,只身一人来到大城市北京,努力奋斗、努力工作的励志故事。并且在奋斗的路上,遇见了继父丢失的儿子——宁宁,也就是她青梅竹马的哥哥。他们是如何认出对方的?又是如何最终走在一起?种种疑团都在作品中为您呈现......

  • 血煞仙域

    血煞仙域

    天地浩荡,日月当空,皇天大陆,天骄并起,群雄逐鹿。八年前,少年江枫,被家族弃于妖兽山脉。然,八年后,强势归来,一人一剑,败天骄,压群雄,逆天崛起,制霸五域。圣女?只够资格给我暖床;圣子?只够资格给我背剑!

  • 恐怖殡仪馆

    恐怖殡仪馆

    我叫凌余,跟大胖一起在殡仪馆工作,有一天殡仪馆里来了一具身穿香奈儿的漂亮女尸,我把这套香奈儿偷了回去,送给了女朋友,接着,一连串的邪门事情发生了……接连的死亡,一步步逼近我跟大胖,我们又该如何逃脱死神的追逐?

  • 猜你喜欢
    热门推荐
  • 苍炎的轨迹修改器
  • 和字币2017的发行安排
  • kick it up a notch
  • 王爷有难by春色 腐书
  • hottoys美剧闪电侠
  • android 鼠标点击漫画
  • 菲利普狄克的电子梦
  • jq changed
  • win8到win7 重新分区
  • trmg006
  • 泾河新城永乐镇规划图
  • cas 自定义用户信息
  • ereg replace php
  • lg vacuum cleaner
  • 六月飞霜 为何被禁
  • 愤怒的香蕉 异化 人物
  • 五粮液68度和52度那好
  • 口袋妖怪复刻蜥蜴王m
  • 正见 佛陀的证悟 txt
  • arcgis80转2000坐标系
  • All Right Reserved 安福网