Spring项目——Shiro和JWT技术

一、Shiro简介

在这里插入图片描述
Shiro官网网址:https://shiro.apache.org/documentation.html

ShiroJava领域非常知名的认证( Authentication )与授权 ( Authorization )框架,用以替代JavaEE中的JAAS功能。相 较于其他认证与授权框架,Shiro设计的非常简单,所以广受好 评。任意JavaWeb项目都可以使用Shiro框架,而Spring Security 必须要使用在Spring项目中。所以Shiro的适用性更加广泛。像什 么 JFinalNutzSpring框架都可以使用Shiro,而不能使用Spring Security框架。
在这里插入图片描述

1、什么是认证?

认证就是要核验用户的身份,比如说通过用户名和密码来检验用户的身份。说简单一些,认证就是登陆。登陆之后Shiro要记录用户成功登陆的凭证。

2、什么是授权?

授权是比认证更加精细度的划分用户的行为。比如说一个教务管理系统中,学生登陆之后只能查看信息,不能修改信息。而班主任就可以修改学生的信息。这就是利用授权来限定不同身份用户 的行为。

3、Shiro靠什么做认证与授权的?

Shiro可以利用 HttpSession 或者 Redis 存储用户的登陆凭证,以及角色或者身份信息。然后利用过滤器(Filter),对每个Http请求过滤,检查请求对应的 HttpSession 或者 Redis 中的认证 与授权信息。如果用户没有登陆,或者权限不够,那么Shiro会向客户端返回错误信息。

也就是说,我们写用户登陆模块的时候,用户登陆成功之后,要调用Shiro保存登陆凭证。然后查询用户的角色和权限,让Shiro存储起来。将来不管哪个方法需要登陆访问,或者拥有特定的角色跟权限才能访问,我们在方法前设置注解即可,非常简单。

二、JWT简介

JWTJson Web Token), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标 准。JWT一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服 务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
在这里插入图片描述

1、JWT可以用在单点登录的系统中

传统的 JavaWeb 项目,利用 HttpSession 保存用户的登陆凭证。如果后端系统采用了负载均衡 设计,当用户在A节点成功登陆,那么登陆凭证保存在A节点的 HttpSession 中。如果用户下一 个请求被负载均衡到了B节点,因为B节点上面没有用户的登陆凭证,所以需要用户重新登录, 这个体验太糟糕了。
在这里插入图片描述
如果用户的登陆凭证经过加密( Token )保存在客户端,客户端每次提交请求的时候,把 Token 上传给后端服务器节点。即便后端项目使用了负载均衡,每个后端节点接收到客户端上传 的Token之后,经过检测,是有效的 Token ,于是就断定用户已经成功登陆,接下来就可以提供 后端服务了。

在这里插入图片描述

2、JWT兼容更多的客户端

传统的 HttpSession 依靠浏览器的 Cookie 存放 SessionId ,所以要求客户端必须是浏览器。现 在的 JavaWeb 系统,客户端可以是浏览器、APP、小程序,以及物联网设备。为了让这些设备都 能访问到 JavaWeb 项目,就必须要引入 JWT 技术。JWT 的 Token 是纯字符串,至于客户端怎么 保存,没有具体要求。只要客户端发起请求的时候,附带上 Token 即可。所以像物联网设备,我 们可以用 SQLite 存储 Token 数据。

本篇文章我们只讲了Shiro和JWT技术概念,之后我会将这些技术应用在一个实战项目中,希望大家有需要的继续关注!!

本次分享到此结束,谢谢大家阅读!!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何壹时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值