《权力与纷争-Shiro》-Know your own weapons

2024-01-07 18:59
文章标签 shiro 纷争 know 权力 weapons

本文主要是介绍《权力与纷争-Shiro》-Know your own weapons,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:这次写有关Shiro框架的一系列博客,为自己加油吧!


Shiro是什么?


            Shiro是一个权限框架,实现系统权限的控制,如同一个系统登录,管理员能控制什么,使用什么资源(资源可以是某个按钮,菜单,功能),而用户登录后能使用什么资源。

            Shiro主要有认证,授权,加密,会话管理这几块,而且Shiro框架不仅BS试用,CS项目也可以使用Shiro框架,是一款非常优秀的权限框界面。


            类似的有Spring 的Security,也是权限框架,不过比较依赖Spring,但是有人说Security比Shiro要强大,Shiro比较灵活。


Shiro能干什么?(功能点)


Primary Concerns(主要功能)


Authentication :身份验证/登录,验证用户的身份。
Authorization:授权,权限认证,确定用户能干什么,不能干什么。
SessionManager :会话管理,用户登录一次就是一次会话,没有退出前,他的所有信息都在会话中。
Cryptography:加密,保护数据安全性,比对密文而不是铭文。


Supporting Features(支撑功能)


Web support:web支持,容易集成到web环境
Caching:缓存,保存角色,权限信息,不用每次都去查


Concurrency:多线程应用并发,一个线程中开启另一个线程,能把权限传播过去
Testing:测试支持
Run As :允许一个用户假装一个用户进行访问

Remember Me :记住我,登陆一次,下次再来不用登陆



Shrio 不回去维护用户,维护权限,这些我们自己去做,然后通过接口注入给Shiro


Shiro长得咋样?




Application code(应用程序代码调用的都是Subject),可以看出Subject是对外API的核心。


Subject:

           主体,代表了当前用户,用户不一定是具体的人,也可以是与之交互的任何东西,如网络爬虫,机器人等=  =,所有的Subject都绑定到SecurityManager,Subjecj就是一个门面,SecurityManager 才是实际的执行者,这是一个慈禧与光绪的故事....


SecurityManager :

           安全管理器,所有相关操作都会与SecurityManager 交互,且她管着所有Subject,可以看出他是Shiro的核心,负责与其他组件的交互,类似于SpringMVC的DispatcherServlet。


Realm:

            域,Shiro从Realm获取安全数据(用户,角色,权限)SecurityManager 从Realm里验证用户的身份是否合发,这个由我们实现的。


简单应用Shiro基本要

            1 代码调用Subject来进行授权认证,而Subject 委托给SecurityManager。

           2 给SecurityManager注入Realm,让SecurityManager对用户和权限进行判断。


Shiro的架构



最上面一行,说的是可以通过

          C++,C#编程语言,PHP,Ruby脚本语言,Felx,Silvelight 前端技术,WebMVC前端框架,最后是其他独立程序,这些都通过使用Subject用户。


Subject :主体,可以看到主体可以是任何可以与应用交互的“用户”;


SecurityManager :  

           相 当 于 SpringMVC 中 的 DispatcherServlet 或 者 Struts2 中 的FilterDispatcher;是 Shiro 的心脏;所有具体的交互都通过 SecurityManager 进行控制;它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理。


Authenticator :

            认证器,负责主体认证的,这是一个扩展点,如果用户觉得 Shiro 默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;


Authrizer:

            授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;


Realm :

            可以有 1 个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等等;不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的 Realm;


SessionManager :

            如果写过 Servlet 就应该知道 Session 的概念,Session 呢需要有人去管理它的生命周期,这个组件就是 SessionManager;而 Shiro 并不仅仅可以用在 Web 环境,也可以用在如普通的 JavaSE 环境、EJB 等环境;所有呢,Shiro 就抽象了一个自己的 Session来管理主体与应用之间交互的数据;这样的话,比如我们在 Web 环境用,刚开始是一台Web 服务器;接着又上了台 EJB 服务器;这时想把两台服务器的会话数据放到一个地方,这个时候就可以实现自己的分布式会话(如把数据放到 Memcached 服务器);


SessionDAO: 

             DAO 大家都用过, 数据访问对象, 用于会话的 CRUD, 比如我们想把 Session保存到数据库,那么可以实现自己的 SessionDAO,通过如 JDBC 写到数据库;比如想把Session 放到 Memcached 中,可以实现自己的 Memcached SessionDAO;另外 SessionDAO中可以使用 Cache 进行缓存,以提高性能;


CacheManager:

             缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能


Cryptography :密码模块,Shiro 提高了一些常见的加密组件用于如密码加密/解密的。

最后一行是数据。



简单的介绍就到这了,下次给大家来个简单例子哈!



————————————————————chenchen——————————————————————


这篇关于《权力与纷争-Shiro》-Know your own weapons的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/580920

相关文章

shiro 学习笔记

权限系统: 分配权限(把对某些安全实体的某些权限分配给某些人员的过程) 验证权限(判断某个人员或程序对某个安全实体是否拥有某个或某些权限的过程) 安全实体:比如数据,资源。 权限:比如查看,修改 权限的继承性:安全实体的包含性,比如大楼里面的房间。 权限最近匹配原则:和包含类似,里面没有权限控制,像外层找,找到最近的。 shiro 的作用:认证,授权,加密,会话。 subj

怎么处理整合了shiro的应用的RPC接口鉴权问题

这篇文章分享一下:当一个服务提供者整合了shiro安全框架来实现权限访问控制时,服务消费者通过feign请求服务提供者的接口时的鉴权不通过问题。 问题描述 博主有一个项目pms(权限管理系统),使用了shiro框架来实现鉴权功能,使用的是shiro内置的perms过滤器。  而服务消费者端,通过feign访问RPC接口,很显然,由于是不同的项目,鉴权肯定是失败的。 pac

【Shiro】Apache Shiro架构之实际运用(整合到Spring中)

Shiro系列文章:  【Shiro】Apache Shiro架构之身份认证(Authentication)  【Shiro】Apache Shiro架构之权限认证(Authorization)  【Shiro】Apache Shiro架构之集成web  【Shiro】Apache Shiro架构之自定义realm 写在前面:前面陆陆续续对Shiro的使用做了一些总结,如题,这篇博文

【Shiro】Apache Shiro架构之自定义realm

Shiro系列文章:  【Shiro】Apache Shiro架构之身份认证(Authentication)  【Shiro】Apache Shiro架构之权限认证(Authorization)  【Shiro】Apache Shiro架构之集成web  【Shiro】Apache Shiro架构之实际运用(整合到Spring中)       之前写的博客里都是使用.ini文件来获取信

【Shiro】Apache Shiro架构之权限认证(Authorization)

Shiro系列文章:  【Shiro】Apache Shiro架构之身份认证(Authentication)  【Shiro】Apache Shiro架构之集成web  【Shiro】Apache Shiro架构之自定义realm  【Shiro】Apache Shiro架构之实际运用(整合到Spring中)       上一篇博文总结了一下Shiro中的身份认证,本文主要来总结一下S

5 Things Every Manager Should Know about Microsoft SharePoint 关于微软SharePoint每个经理应该知道的五件事

5 Things Every Manager Should Know about Microsoft SharePoint 关于微软SharePoint每个经理应该知道的五件事         Would you like to quickly find information that you know your company has in its files... so

shiro整合MP的springboot案例与详解

一、准备数据库 数据库需要准备三个表,一个user表,一个role表,一个permission表。 CREATE TABLE `user` (`id` INT NOT NULL,`username` VARCHAR(100) DEFAULT NULL,`password` VARCHAR(100) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB

SpingBoot集成shiro,MyRealm中无法@Autowired注入Service的问题

网上说了很多诸如是Spring加载顺序,shiroFilter在Spring自动装配bean之前的问题,其实也有可能忽略如下低级错误。 在ShiroConfiguration中要使用@Bean在ApplicationContext注入MyRealm,不能直接new对象。 道理和Controller中调用Service一样,都要是SpringBean,不能自己new。 错误方式: @Bean

产品为何总是做不好 (二): 被一群有权力没能力; 有屁股没脑袋; 的公公婆婆所挟持

2016.8.31, Ken Fang 在离开西安的前一晚,我又来到了,我所熟悉的那间面店、咖啡店。 一碗极其简单的面、一杯什么都不加的黑咖啡,正好能让我真正的感受到那…最简单却又最原始的美味。 为何简单到不行,却能让人感动到最深? 我想,唯一最主要的原因是: 只有煮面的、煮咖啡的,才能最了解客户;只有煮面的、煮咖啡的,才真正有能力,决定面该怎么煮?咖啡该怎么煮? 做产品又何

【shiro】shiro学习笔记3-散列功能

对于密码,有很多种加密方式散列是其中 最常用的,shiro提供了直接支持。 环境 <dependencies><!-- shiro --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.4</version></dependency><!--日志