您的位置:首页 > 其它

ssh+shiro权限控制的xml配置

2018-03-29 19:09 369 查看
pom.xml 的配置:
<properties>
<shiro.version>1.2.2</shiro.version>
</properties>

<dependencies>
<!-- 权限控制 框架 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>${shiro.version}</version>
</dependency>
web.xml的配置:
<!--
2.5的工程,filter执行的顺序是按照在web.xml中注册的顺序从上往下执行的
3.0的工程,filter执行的顺序是类名的字典顺序
listener
filter
servlet(第一次访问的时候创建)
-->
<!--
spring框架提供,整合shiro框架
本拦截器一定要卸载struts的拦截器之上
在DelegatingFilterProxy创建的过程中,依赖了一个对象,这个对象必须在applicationContext.xml文件中注册
而且注册的时候声明的id必须和DelegatingFilterProxy声明的filter-name保持一致
-->
<filter>
<filter-name>shiroFilterFactoryBean</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilterFactoryBean</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
applicationContext.xml 的配置:

<!-- 初始化shiro框架提供的过滤器 -->
<bean id="shiroFilterFactoryBean" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- 注入安全管理器 -->
<property name="securityManager" ref="securityManager"></property>

<!-- 权限认证的页面,登录页面 -->
<property name="loginUrl" value="/login.html"></property>
<!-- 权限认证成功以后要跳转的页面 -->
<property name="successUrl" value="/index.html"></property>
<!-- 权限不足要跳转的页面
只对拦截器生效,不会注解方式生效
-->
<property name="unauthorizedUrl" value="/unauthorizedUrl.html"></property>
<!--指定拦截的规则 -->
<property name="filterChainDefinitions">
<!--
authc:框架提供的过滤器,有权限就放行,没有权限就拦截
anon:框架提供的过滤器,可以匿名访问
perms:框架提供的过滤器,用户请求资源的时候,会去检查用户是否拥有对应的权限,如果有就放行,没有,跳转到unauthorizedUrl属性指定的页面
拦截的规则执行的时候是从上往下执行的,一旦有一个规则匹配成功,后面的规则就不再执行了
拦截的规则不可以折行
-->
<value>

/css/* = anon         拦截器拦截主要是用户还没有登陆时 需要保护的资源
/data/* = anon
/images/* = anon
/js/** = anon
/validatecode.jsp = anon
/userAction_login.action = anon
/courierAction_pageQuery.action = perms["courierAction_pageQuery"]
/hi.html = perms["courierAction_pageQuery"]
/** = authc
</value>
</property>
</bean>

<!-- 注册安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!-- 注入realm -->
<property name="realm" ref="userRealm"></property>
</bean>
如果需要开启事务注解定义拦截规则就要在
applicationContext.xml 的配置加上如下配置:    <!--        开启事务注解        JDK代理方式 : 根据目标对象所实现的接口,创建了一个代理对象        CGLib代理方式 : 创建一个目标对象的子类        proxy-target-class:true,使用cglib代理        proxy-target-class:false,使用jdk代理    -->    <tx:annotation-driven proxy-target-class="true"        transaction-manager="transactionManager" />    <!-- 基于Spring的自动代理,创建Service层的实现 -->    <bean        class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">        <!-- 开启cglib代理 -->        <property name="proxyTargetClass" value="true"></property>    </bean>    <!--        配置切面= 切点(向那里插入代码)+通知 (要插入的代码)    -->    <bean        class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">        <!-- 注入安全管理器 -->        <property name="securityManager" ref="securityManager"></property>    </bean>注解的应用场景是用户已经完成登陆了标签的方式 主要应用在 动态的展示权限(比如用户有权限,就给他显示修改功能,没权限就不显示)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: