Apache权限框架shiro

shiro是一个安全权限框架,使用它我们可以完成认证、授权、加密、会话管理、与 Web 集成、缓存等。

Apache权限框架shiro_第1张图片
shiro核心模块securityManager构造解析

Authentication:身份认证 / 登录,从数据库获取数据,验证用户是不是拥有相应的身份;

Authorization:权限验证(授权),验证已通过认证的用户拥有哪些权限;(根据用户角色,判断用户能做哪些事情。)

Session Manager:会话管理,即用户登录后就是一次会话,在用户没有退出之前,它的所有信息都记录在会话中;

Cryptography:加密模块,对于用户的密码等重要信息加密存储(散列算法,加密算法)

websupport:提供web支持,更好的集成项目环境。

caching:缓存,将登陆后的用户信息存储下来,方便下次查找,提高效率。

Concurrency:shiro 支持多线程应用的并发验证,如在一个线程中开启另一个线程,能把权限自动传播过去;

Testing:提供测试支持;

Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

以上整个构成shiro的securityManager,shiro的核心部件就是securityManager。


Apache权限框架shiro_第2张图片
shiro权限处理流程


Apache权限框架shiro_第3张图片
shiro内部架构

项目代码通过subject与shiro产生交互,所以可以将subject是shiro对外的核心,subject即用户对象。

Subject:用户对象,即所有与shiro产生交互的对象,不一定为用户。

securityManager:shiro的核心,用户认证、授权、加解密均在此完成。

realm:域,Shiro 从从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色 / 权限进行验证用户是否能进行操作;可以把 Realm 看成 DataSource,即安全数据源(一个项目可以有多个realm,执行顺序按照配置顺序执行)。

下面就配置shiro,项目采用ssm框架,使用maven管理jar包。

首先在pom.xml下引入shiro的jar包:

Apache权限框架shiro_第4张图片
Apache权限框架shiro_第5张图片

接下来配置spring-shiro.xml

首先配置shiro的核心securityManager

配置securityManager

接下来配置项目自定义的realm(一个项目可配置多个realm,执行顺序按配置顺序执行,bean的id值对应securityManager中property的ref值)


配置项目自定义的realm

接下来配置shiro的权限过滤,securityManager:这个属性是必须的。

loginUrl :没有登录的用户请求需要登录的页面时自动跳转到登录页面,不是必须的属性,不输入地址的话会自动寻找项目web项目的根目录下的”/login.jsp”页面。

successUrl :登录成功默认跳转页面,不配置则跳转至”/”。如果登陆前点击的一个需要登录的页面,则在登录自动跳转到那个需要登录的页面。不跳转到此。

unauthorizedUrl :没有权限默认跳转的页面。

其权限过滤器及配置释义:

anon:例子/admins/**=anon 没有参数,表示可以匿名使用(无须验证即可访问页面)。

authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数。(必须认证之后才可以访问的界面)

logout:一般只对应loginOut,用户直接退出

Apache权限框架shiro_第6张图片
权限过滤器配置

下面配置shiro的缓存(可以使用ehcache或者redis,改配置即可)


shiro缓存配置

你可能感兴趣的:(Apache权限框架shiro)