概述
首先需要知道为什么使用 Shiro+Jwt+Redis
进行登录认证和权限控制。
1. 为什么用Shiro?
主要用的是 shiro
里面的登录认证和权限控制功能。
2. 为什么用Jwt?
Shiro
默认的 Session
机制来帮助实现权限管理,用于维护用户的状态信息。而 JWT
是 token认证
的一种具体实现方式,相对于传统的 session认证
方式,有如下优点:
- 跨域支持:cookie 是无法跨域的,而 token 由于没有用到 cookie(前提是将 token 放到请求头中),所以跨域后不会存在信息丢失问题。
- 无状态:token 机制在服务端不需要存储 session 信息,因为 token 自身包含了所有登录用户的信息,所以可以减轻服务端压力,节约服务器资源,并且可以很容易地分布式横向扩展应用。
- 更适用CDN:可以通过内容分发网络请求服务端的所有资料。
- 更适用于移动端:当客户端是非浏览器平台时,cookie 是不被支持的,此时采用 token 认证方式会简单很多。
- 无需考虑CSRF:由于不再依赖 cookie,所以采用 token 认证方式不会发生 CSRF,所以也就无需考虑 CSRF 防御。
3. 为什么用Redis?
- JWT 本身不能续期,结合 Redis,可以实现
续期
、主动登出
。 - Redis可以缓存用户信息,减少数据库压力。
- 可以实现分布式环境下的会话共享。
Shiro+Jwt+Redis
shiro整合redis jwt