jwt jar包_从入门到运用,Jwt其实并不难!

小Hub领读:

2018年写的一篇文章,哈哈哈,体验一下我当时的写作风格咧~


一般情况下,web项目都是通过session进行认证,每次请求数据时,都会把jsessionid放在cookie中,以便与服务端保持会话。

前后端分离项目中,通过token进行认证(登录时,生成唯一的token凭证),每次请求数据时,都会把token放在header中,服务端解析token,并确定用户身份及用户权限,数据通过json交互。

但是token一般都是UUID生成的一个随机码,作为一个key使用,从缓存中获取具体的用户信息。所以一般需要一个存储介质来保存token和用户信息。在一些场景中,如单点登录时候有点麻烦。

有没一种更方便的方式呢?答案是有的,就是我们今天要讲的jwt。jwt也算是一个特殊的token,不过jwt中自带了用户的相关信息,所以不需要存储介质,只需要验证签名保证安全的前提下就可以直接获取到用户的相关信息。

f8c245cfed37e6bc8043ec56819fc351.png

在讲jwt之前,我们先回顾一下session、token的相关内容。

4d49a5efbcbb37a23e5da651f98543ad.png

session与cookie

我们都知道http是无状态的,所以需要某种机制来识别用户和保存用户的状态。而这个机制就是session。session是保存在服务端的,服务器通过session辨别用户,然后做权限认证等。

那如何才知道用户的session是哪个?这时候cookie就出场了,浏览器第一次与服务器建立连接的时候,服务器会生成一个sessionid返回浏览器,浏览器把这个sessionid存储到cookie当中,以后每次发起请求都会在请求头cookie中带上这个sessionid信息,所以服务器就是根据这个sessionid所以key获取到具体session。

0286bcac5f44b5a8aaa86337840a5042.png

google浏览器中查看cookie内容的方法有两个:

(一)F12,查看具体请求链接的请求头信息

a349d4a948f0088cf10f48d1971e1f5a.png

(二)点击浏览器输入框的认证小锁,可以查看这个域名的相关cookie信息。

0996ba7675ca3af684783665296dc4b0.png

涉及到集群环境得话,session需要弄成分布式session,从而保证多个应用的会话状态一致性。spring项目可以使用spring session+redis来解决session共享问题。shiro项目可以重写redis版SessionDAO,把会话信息存到redis中实现共享。

f4534190853e60b852bb0ef49c9e3d06.png

(所以,明白没?)

接下来我们再来聊聊token。

Token

token,就是我们常说的用户身份令牌。只有涉及到受限资源的访问时候才需要身份令牌,所以,在访问开放资源时候http中是没有token的信息的,也即是说这时候会话是完全无状态的。token的是在用户登录以后生成的。用户登录之后我们会生成一个token作为key保存用户的信息并返回给客户端。保存方式set(token,用户信息)存储到redis等介质。之后客户端发起的请求只要在请求头中附带token的信息就可以完成身份认证。

a3bdfc021e99f060a078bdaf1327b725.png

e3517970d2a7fdba512d7e663e968ada.png

开源项目renren-fast采用了前后分离的机制,使用token来完成身份认证,并且集成了shiro框架,所以想实战的可以去clone下来玩玩~

  • https://gitee.com/renrenio/renren-fast

ab681a00d363b6754042119e551bf86e.png

(只能帮你到这了~)

好了

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值