王毅的专栏

在web开发过程中, 我们经常会碰到安全问题,哪些用户有权限访问,哪些用户没有权限访问,都是我们急需解决的.

接下来介绍一下Shiro框架:

一.Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能: 1)认证 – 用户身份识别,常被称为用户“登录”;

2)授权 – 访问控制;

3)密码加密 – 保护或隐藏数据防止被偷窥;

4)会话管理 – 每用户相关的时间敏感的状态。

对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。

二.Shiro的三个核心组件:Subject, SecurityManager 和 Realms

1)Subject:即“当前操作用户”。但是,在Shiro中,,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。

它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。Subject代表了当前用户的安全操

作,SecurityManager则管理所有用户的安全操作。

2)SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

3)Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配

置的Realm中查找用户及其权限信息。从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给

Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。

三. 环境配置:

1)配置描述符文件(web.xml):

<filter><filter-name>shiroFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><init-param><param-name>targetFilterLifecycle</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>shiroFilter</filter-name><url-pattern>/*</url-pattern>//对每个请求都要进行权限认证;</filter-mapping>

2)配置文件shiro-config.xml :

a. 添加ShiroFilter定义:

<!– Shiro Filter –><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"><property name="securityManager" ref="securityManager" /><property name="loginUrl" value="/login" /><property name="successUrl" value="/user/list" /><property name="unauthorizedUrl" value="/login" /><property name="filterChainDefinitions"><value>/login = anon/user/** = authc/role/edit/* = perms[role:edit]/role/save = perms[role:edit]/role/list = perms[role:view]/** = authc</value></property></bean> <font size="4"><font size="3"><font size="2"><font size="3"><span style="font-size:18px;"><span style="font-size:14px;"><span style="font-size:12px;">b. </span></span></span></font></font></font></font><span style="font-size:12px;">securityManager定义:</span> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" ><property name="realm" ref="shiroRealm" /><property name="cacheManager" ref="cacheManager" /></bean>

c. 添加自定义Realm:

<!– 項目自定义的Realm –><bean id="shiroRealm" class="starview.common.account.service.ShiroRealm">//对应的类;<property name="isDebug"><value>false</value></property><property name="allPermissions"><list><value>program:list</value><value>program:edit</value><value>program:audit</value><value>DYBJ</value><value>DYSH</value></list></property></bean>流转的时光,都成为命途中美丽的点缀,

王毅的专栏

相关文章:

你感兴趣的文章:

标签云: