1. Shiro 简介

本篇参考张开涛《跟我学Shiro》

Shiro 简介

  • Apache Shiro 是 Java 的一个安全权限框架
  • Shiro 可以非常容易地开发出足够好地应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境中。
  • Shiro 可以完成:认证、授权、加密、会话管理、与Web继承、缓存等。
  • 下载:http://shiro.apache.org/

在这里插入图片描述

  • Authentication:相当于身份认证,对登陆地用户进行验证看看你是否拥有相应地身份;
  • Authorization:相当于授权,比如说验证某个已经认证的用户是否拥有某个权限(通俗的讲就是判断用户是否能做事情),常见的例如:验证某个用户是否拥有某个角色。或者更细分的来说:验证某个用户对某个资源是否具有权限;
  • Session Manager:会话管理,就是用户登陆后就是一次会话,在没有退出前,它的所有信息都存储在会话中;
  • Cryptography:加密,保护数据的安全性,比如密码加密存储到数据库中,而不是明文存储;
  • Web Support:Web支持,可以轻松的集成到 Web 环境中;
  • Caching:缓存,比如用户登陆成功后,用户的个人信息都在缓存中,不用经常查询,提高效率的一种方式;
  • Concurrency:shiro 支持多线程应用的并发验证,比如在一个线程中开启另一个线程,能把权限自动传播过去。
  • Testing:提供测试支持;
  • Run As:允许一个用户假装为另一个用户的身份进行访问;
  • Remember Me:相当于表单登陆中的 “记住密码”性质一样,即登陆过一次后,下次再来的话就不用登陆了。

比较重要的一点:Shiro 不会去维护用户、维护权限;这些需要自己去设计/提供;然后通过相应的接口注入给 Shiro 即可。

Shiro 的工作流程

在这里插入图片描述

  • Subject:相当了当前用户,这个用户并不一定是具体的人,与当前应用交互的任何东西都可以称之为 Subject;所有的 Subject 都绑定到 SecurityManager ,与 Subject 的所有交互都会委托给 SecurityManager;可以将 Subject 看作是一个门面;SecurityManager 才是实际的执行这;
  • SecurityManager:它是一个安全管理器,所有与安全有关的操作都会与 SecurityManager 交互并且它还管理着所有 Subject;可以把 SecurityManager 看作是 Shiro 的核心对象,它主要负责和其它组件进行交互,可以将它比作 SpringMVC 中的 DispatcherServlet 前端控制器;
  • Realm:Shiro 从 Realm 获取安全数据(例如用户、角色、权限),就是说 SecurityManager 要验证用户身份,就需要从 Realm 中获取相应的用户进行比较来确认用户身份是否合法;也需要从 Realm 拿到用户相应的角色/权限进行验证用户是否能够进行操作;可以把 Realm 比作 DataSource,即安全数据源。

一个简单的 Shiro 应用是如何执行的呢?

  1. 首先应用代码通过 Subject 来进行认证和授权,而 Subject 又委托给 SecurityManager;
  2. 我们需要给 Shiro 的 SecurityManager 注入 Realm,从而让 SecurityManager 能得到合法的用户及其权限进行判断。

猜你喜欢

转载自blog.csdn.net/qq_43647359/article/details/105878446