概述:
权限体系在现代软件应用中有着非常重要的地位。一个应用如果没有权限体系都会显着这个系统“特别不安全”,无论是传统的MIS系统还是互联网项目出于对业务数据和应用自身的安全,都会设置自己的安全策略。目前市场上专门的Java权限框架有Apache Shiro 和 Spring Security,相较于Spring Security,Shiro是比较老牌的权限框架。但是,学习好Shiro对于以后市场上在出现新型权限框架的学习能带来很大便利。因为权限的概念是不变的,变得是框架的实现方式。
官方解释:
Apache Shiro是一个强大的并且简单使用的java权限框架.主要应用认证(Authentication)、授权(Authorization)、cryptography(加密)、和Session Manager.Shiro具有简单易懂的API,使用Shiro可以快速并且简单的应用到任何应用中,无论是从最小的移动app到最大的企业级web应用都可以使用.
Shiro的核心功能:
Authentication(认证)如用户的登录。
Authorization (授权)用户是否有权限访问指定URL等。
Cryptography (加密)如密码的加密。
Session Management Session 管理。
Web Integration( Web集成)Shiro不依赖于容器
Shiro架构原理:
Subject
主体。每个用户登录成功后都会对应一个Subject对象,所有用户信息都存放在Subject中。可以理解:Subject就是Shiro提供的用户实体类。
Security Manager
Shiro最大的容器,此容器中包含了Shiro的绝大多数功能。在非Spring Boot项目中,获取Security Manager 是编写代码的第一步。而在Spring Boot中已经帮助我们自动化配置了。
Authenticator
认证器。执行认证过程调用的组件。里面包含了认证策略。
Authorizer
授权器。执行授权时调用的组件。
Session Manager
Shiro被Web集成后,HttpSession对象会由Shiro的Session Manager进行管理。
Cache Manager
缓存管理。Shiro执行很多第三方缓存技术。例如:EHCache等。
Session DAO
操作Session内容的组件。
Realms
Shiro框架实现权限控制不依赖于数据库,通过内置数据(.ini文件)也可以实现权限控制。但是目前绝大多数应用的数据都存储在数据库中,所以Shiro提供了Realms组件,此组件的作用就是访问数据库。Shiro内置的访问数据库的代码,通过简单配置就可以访问数据库,也可以自定义Realms实现访问数据库逻辑。
INI文件介绍
INI英文名称(InitializationFile)
INI文件是Window系统配置文件的扩展名.
Shiro的全局配置文件就是.ini文件,ini中数据都是固定数据,后面会用数据库中数据替代下面users和roles(固定数据部分)
.ini文件内容的语法和.properties类似都是key=value,value格式.
INI文件中包含了四个部分:main、users、roles、urls。