Spring Boot(九):SpringBoot整合Shiro做登录认证和权限管理

 Shiro 是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。Shiro 的首要目标是易于使用和理解。安全通常很复杂,甚至让人感到很痛苦,但是 Shiro 却不是这样子的。一个好的安全框架应该屏蔽复杂性,向外暴露简单、直观的 API,来简化开发人员实现应用程序安全所花费的时间和精力。

Shiro 能做什么呢?

  1. 验证用户身份
  2. 用户访问权限控制,比如:1、判断用户是否分配了一定的安全角色。2、判断用户是否被授予完成某个操作的权限
  3. 在非 Web 或 EJB 容器的环境下可以任意使用 Session API
  4. 可以响应认证、访问控制,或者 Session 生命周期中发生的事件
  5. 可将一个或以上用户安全数据源数据组合成一个复合的用户 "view"(视图)
  6. 支持单点登录(SSO)功能
  7. 支持提供“Remember Me”服务,获取用户关联信息而无需登录

      …

等等——都集成到一个有凝聚力的易于使用的 API。

Shiro的框架图:

Authentication(认证), Authorization(授权), Session Management(会话管理), Cryptography(加密)被 Shiro 框架的开发团队称之为应用安全的四大基石。

Spring Boot(九):SpringBoot整合Shiro做登录认证和权限管理

  1. Authentication(认证):用户身份识别,通常被称为用户“登录”
  2. Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。
  3. Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB 应用程序。
  4. Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用。

还有其他的功能来支持和加强这些不同应用环境下安全领域的关注点。特别是对以下的功能支持:

  • Web支持:Shiro 提供的 Web 支持 api ,可以很轻松的保护 Web 应用程序的安全。
  • 缓存:缓存是 Apache Shiro 保证安全操作快速、高效的重要手段。
  • "Remember Me":跨 session 记录用户的身份,只有在强制需要时才需要登录。
  • "Run As":这个功能允许用户假设另一个用户的身份(在许可的前提下)。
  • 测试:支持单元测试和集成测试,确保代码和预想的一样安全。
  • 并发:Apache Shiro 支持多线程应用程序的并发特性。

注意: Shiro 不会去维护用户、维护权限,这些需要我们自己去设计/提供,然后通过相应的接口注入给 Shiro