001 shiro

一 . 概述

  shiro作为一个权限框架,它最大的特点不是简单易用,而是可配置性强,也就是说我们几乎可以修改shiro的全部功能实现以符合自己的预期.

    要想做到定制性的使用,就必须要对shiro的一些原理进行一些分析.


 二 . shiro的外部架构

  

  从外部架构图中可以看到,我们的应用程序使用Subject对象完成和shiro的交互的.

  Subject对象和SecurityManager对象完成交互,其中认证和授权所需要的数据全部都是从Realm之中获取.

  [1]Subject : 主体,表示一个用户,该对象是从SecurityManager对象之中获取的,应用程序和shiro的交互都是通过该对象完成的.

  [2]SecurityManager :安全管理器,其中封装了Shiro的全部组件,如认证器.授权器.Session管理器等,通过接口的隔离性,我们可以替换其中任何组件的实现,完成对Shiro的定制.

  [3]Realm : 安全数据源,Shiro认证和授权的数据都是从该接口之中获取.


 三 .Shiro的内部架构

扫描二维码关注公众号,回复: 877419 查看本文章

  我们可以看到我们的应用程序,都是通过Subject对象和SecurityManager对象完成交互的.

  在Shiro之中,最为重要的就是SecurityManager对象了.

  我们可以理解为是一个Shiro的容器,从图中我们可以看到,SecurityManager对象包含了认证器,授权器,session管理器等组件.这些组件都是后面我们需要替换的对象.


 四 . Shiro的功能图

 从上面的图中,我们可以看到Shiro可以提供的功能.

  上面绿色的表示是组要功能,下面蓝色的表示的是辅助功能.

[1] 认证 : 简单说就是登录,通过主题信息和凭证(一般意义上为账号和密码),完成用户身份的确认.

[2]授权 : 完成认证之后,用户所具有的权限就知道了.授权的含义就是访问控制,意思就是让用户在自己的权限范围内进行访问,因此每次需要确认用户权限的地方都会进行授权操作.

    本质上就是一个权限的检查操作.

[3]Session管理 : 会话管理,这个是后面我们讨论最多的一部分,seesion的管理是最为复杂的部分,尤其是到了集群环境下.

[4]缓存管理: 提升我们Shiro的效率的一种方式,后面也会重点说明.

.............

从上面我们可以看到Shiro最直接的目的就是两点:

(1)完成认证

(2)完成授权

在此基础之上,提供了Shiro的高级功能,这写高级功能我们后面都会自定义区实现的.

猜你喜欢

转载自www.cnblogs.com/trekxu/p/9048566.html
001