shiro系列-上层架构&用户权限模型

来源:互联网 发布:淘客采集软件 编辑:程序博客网 时间:2024/06/05 19:39
前一篇给shiro的demo,让大家有个直观的体验。本章讲讲shiro上层的抽象与框架。

上图是shiro上层的抽象,主要有三个抽象,分别是Subject,SecurityManager,Realm。
Subject代表与系统交互的对象,可以是人,其他服务应用等。我们可以简单理解为用户。我们代码中与Subject的交互实际最后都会转到SecurityManager。如上篇中登录代码:subject.login(authenticationToken)
SecurityManager是shiro核心对象,它管理很多重要的抽象,协同调度这些抽象完成任务。在实际编程时,对开发人员是透明的,开发人员主要是与subject对象交互。
Realm是链接shiro与应用自己的安全数据。上篇中所有的用户,角色,权限均是写死到shiro.ini中,实际应用中这些数据会持久化到db中,shiro通过Realm获取到这些数据,进而进行认证与授权。


上图是shiro的详细架构图。应用代码均是与Subject对象交互,Subject对象将请求转到SecurityManager,SecurityManager再统一分派委托,最终反应到应用代码。
在介绍下篇的认证前,先介绍下shrio用户权限模型。

上图主要是有三个抽象,分别是用户,角色,权限。我们可以这样理解,小明是一家公司的老板,他可以管理公司里的员工,小明又是某熊孩子的父亲,可以教育熊孩子。用用户权限模型来解释的化,小明是用户,他有两个角色,分别是老板和父亲。可以管理公司的员工也可以教育熊孩子。
下篇详细介绍shiro的认证模块。