没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
14页
apache shiro 是一个安全认证框架,和 spring security 相比,在于他使用了比较简洁易懂的认证和授权方式。其提供的 native-session(即把用户认证后的授权信息保存在其自身提供Session 中)机制,这样就可以和 HttpSession、EJB Session Bean 的基于容器的 Session 脱耦,到和客户端应用、Flex 应用、远程方法调用等都可以使用它来配置权限认证。 在exit-web-framework 里的vcs-admin 例子用到该框架,具体使用说明可以参考官方帮助文档。在这里主要讲解如何与 spring 结合、动态创建filterchaindefinitions、以及认证、授权、和缓存处理。
资源推荐
资源详情
资源评论
<!-- Spring ApplicationContext 配置文件的路径,可使用通配符,多个路径用,号分隔 此参数用于后
面的 Spring Context Loader -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext-shiro.xml
</param-value>
</context-param>
<!-- shiro security filter -->
<filter>
<!-- 这里的 filter-name 要和 spring 的 applicationContext-shiro.xml 里的
org.apache.shiro.spring.web.ShiroFilterFactoryBean 的 bean name 相同 -->
<filter-name>shiroSecurityFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
shiro 与 spring 整合、动态过滤链、
以及认证、授权
apache shiro 是一个安全认证框架,和 spring security 相比,在于他使用了比较简洁易懂的认
证和授权方式。其提供的 native-session(即把用户认证后的授权信息保存在其自身提供
Session 中)机制,这样就可以和 HttpSession、EJB Session Bean 的基于容器的 Session
脱耦,到和客户端应用、Flex 应用、远程方法调用等都可以使用它来配置权限认证。 在exit-
web-framework 里 的 vcs-admin 例子用到该框架,具体使用说明可以参考官方帮助文档。在这
里主要讲解如何与 spring 结合、动态创建filterchaindefinitions、以及认证、授权、和缓存处
理。
apache shiro 结合 spring
Shiro 拥有对 Spring Web 应用程序的一流支持。在Web 应用程序中,所有 Shiro 可访问
的万恶不请求必须通过一个主要的Shiro 过滤器。该过滤器本身是极为强大的,允许临时
的自定义过滤器链基于任何 URL 路径表达式执行。 在 Shiro 1.0 之前,你不得不在 Spring
web 应用程序中使用一个混合的方式,来定义 Shiro 过滤器及所有它在 web.xml 中的配置
属性,但在 Spring XML 中定义 SecurityManager。这有些令人沮丧,由于你不能把你的配
置固定在一个地方,以及利用更为先进的 Spring 功能的配置能力,如
PropertyPlaceholderConfigurer 或抽象 bean 来固定通用配置。现在在 Shiro 1.0 及以后版
本中,所有 Shiro 配置都是在Spring XML 中完成的,用来提供更为强健的Spring 配置机
制。以下是如何在基于Spring web 应用程序中配置Shiro: web.xml:
<bean id="shiroSecurityFilter"
class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- shiro 的核心安全接口 -->
<property name="securityManager" ref="securityManager" />
<!-- 要求登录时的链接 -->
<property name="loginUrl" value="/login.jsp" />
<!-- 登陆成功后要跳转的连接 -->
<property name="successUrl" value="/index.jsp" />
<!-- 未授权时要跳转的连接 -->
<property name="unauthorizedUrl" value="/unauthorized.jsp" />
<!-- shiro 连接约束配置 -->
<propery name="filterChainDefinitions">
<value>
/login = authc
/logout = logout
/resource/** = anon
</value>
</property>
</bean>
<bean id="securityManager"
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
</bean>
<bean id="lifecycleBeanPostProcessor"
class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
applicationContext-shiro.xml 文件中,定义 web 支持的 SecurityManager 和
"shiroSecurityFilter"bean 将会被 web.xml 引用。
启用 Shiro 注解
在独立应用程序和Web 应用程序中,你可能想为安全检查使用 Shiro 的注释(例如,
@RequiresRoles,@RequiresPermissions 等等)。这需要Shiro 的 Spring AOP 集成来
扫描合适的注解类以及执行必要的安全逻辑。以下是如何使用这些注解的。只需添加这两个
bean 定义到applicationContext-shiro.xml 中:
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroSecurityFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
@Entity
@Table(name="TB_RESOURCE")
public class Resource implements Serializable {
//主键 id
@Id
private String id;
//action url
private String value;
//shiro permission;
private String permission;
// Getter/Setter
//
}
@Repository
public class ResourceDao extends BasicHibernateDao<Resource, String> {
}
动态创建 filterchaindefinitions
有时,在某些系统想通过读取数据库来定义
org.apache.shiro.spring.web.ShiroFilterFactoryBean 的filterChainDefinitions。这样能够通
过操作界面或者维护后台来管理系统的链接。
在 shrio 与 spring 集成好了以后,调试源码的高人可能已经注意到。项目启动时,shrio 通
过自己的 org.apache.shiro.spring.web.ShiroFilterFactoryBean 类的filterChainDefinitions(
授权规则定义)属性转换为一个filterChainDefinitionMap,转换完成后交给
ShiroFilterFactoryBean 保管。ShiroFilterFactoryBean 根据授权(AuthorizationInfo 类)
后的信息去判断哪些链接能访问哪些链接不能访问。filterChainDefinitionMap 里面的键就是
链接URL,值就是存在什么条件才能访问该链接,如 perms、roles。
filterChainDefinitionMap 是一个 Map,shiro 扩展出一个 Map 的子类 Ini.Section
现在有一张表的描述实体类,以及数据访问:
<bean
class="org.springframwork.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
depends-on="lifecycleBeanPostProcessor"/>
<bean
class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdv
isor">
<property name="securityManager" ref="securityManager"/>
</bean>
剩余13页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功