会话跟踪令牌技术

1.如果通过令牌技术来跟踪会话,我们就可以在浏览器发起请求。在请求登录接口的时候,如果登录成 功,我就可以生成一个令牌,令牌就是用户的合法身份凭证。接下来我在响应数据的时候,我就可以直 接将令牌响应给前端。
1.接下来我们在前端程序当中接收到令牌之后,就需要将这个令牌存储起来。这个存储可以存储在
cookie 当中,也可以存储在其他的存储空间 ( 比如: localStorage) 当中。
接下来,在后续的每一次请求当中,都需要将令牌携带到服务端。携带到服务端之后,接下来我们就需要来校验令牌的有效性。如果令牌是有效的,就说明用户已经执行了登录操作,如果令牌是无效的,就 说明用户之前并未执行登录操作。 此时,如果是在同一次会话的多次请求之间,我们想共享数据,我们就可以将共享的数据存储在令牌当 中就可以了。
优缺点
优点:
支持 PC 端、移动端
解决集群环境下的认证问题
减轻服务器的存储压力(无需在服务器端存储)
缺点:需要自己实现(包括令牌的生成、令牌的传递、令牌的校验)
<!-- JWT 依赖 -->
<dependency>
<groupId> io.jsonwebtoken </groupId>
<artifactId> jjwt </artifactId>
<version> 0.9.1 </version>
</dependency>
生成 JWT 代码实现:
@Test
public void genJwt (){
Map < String , Object > claims = new HashMap <> ();
claims . put ( "id" , 1 );
claims . put ( "username" , "Tom" );
String jwt = Jwts . builder ()
. setClaims ( claims ) // 自定义内容 ( 载荷 )
. signWith ( SignatureAlgorithm . HS256 , "itheima" ) // 签名算法
. setExpiration ( new Date ( System . currentTimeMillis () +
24 * 3600 * 1000 )) // 有效期
. compact ();
System . out . println ( jwt );
实现了 JWT 令牌的生成,下面我们接着使用 Java 代码来校验 JWT 令牌 ( 解析生成的令牌 )
@Test
public void parseJwt (){
Claims claims = Jwts . parser ()
. setSigningKey ( "itheima" ) // 指定签名密钥(必须保证和生成令牌时使用
相同的签名密钥)
. parseClaimsJws ( "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiZXhwIjoxNjcyNzI5NzMw
fQ.fHi0Ub8npbyt71UqLXDdLyipptLgxBUg_mSuGJtXtBk" )
. getBody ();
System . out . println ( claims );
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值