shiro 和spring 整合之shiro配置

来源:互联网 发布:c语言函数声明格式 编辑:程序博客网 时间:2024/04/30 15:14

web.xml配置

<!-- shiro的filter --><!-- shiro过虑器,DelegatingFilterProxy通过代理模式将spring容器中的bean和filter关联起来 --><filter><filter-name>shiroFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><!-- 设置true由servlet容器控制filter的生命周期 --><init-param><param-name>targetFilterLifecycle</param-name><param-value>true</param-value></init-param><!-- 设置spring容器filter的bean id,如果不设置则找与filter-name一致的bean--><init-param><param-name>targetBeanName</param-name><param-value>shiroFilter</param-value></init-param></filter><filter-mapping><filter-name>shiroFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>


若需要开启shiro的注解支持,需要在springmvc.xml中开启


<!-- 开启aop,对Controller类代理 --><aop:config proxy-target-class="true"></aop:config><!-- 开启shiro注解支持 --><beanclass="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"><property name="securityManager" ref="securityManager" /></bean>



spring-shiro.xml配置

<!-- web.xml中shiro的filter对应的bean --><!-- Shiro 的Web过滤器 --><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"><property name="securityManager" ref="securityManager" /><!-- loginUrl认证提交地址,如果没有认证将会请求此地址进行认证,请求此地址将由formAuthenticationFilter进行表单认证 --><property name="loginUrl" value="/login.action" /><!-- 认证成功统一跳转到first.action,建议不配置,shiro认证成功自动到上一个请求路径 --><property name="successUrl" value="/first.action"/><!-- 通过unauthorizedUrl指定没有权限操作时跳转页面--><property name="unauthorizedUrl" value="/refuse.jsp" /><!-- 自定义filter配置 --><property name="filters"><map><!-- 将自定义 的FormAuthenticationFilter注入shiroFilter中--><entry key="authc" value-ref="formAuthenticationFilter" /></map></property><!-- 过虑器链定义,从上向下顺序执行,一般将/**放在最下边 --><property name="filterChainDefinitions"><value><!-- 对静态资源设置匿名访问 -->/images/** = anon/js/** = anon/styles/** = anon<!-- 验证码,可匿名访问 -->/validatecode.jsp = anon<!-- 请求 logout.action地址,shiro去清除session-->/logout.action = logout<!--商品查询需要商品查询权限 ,取消url拦截配置,使用注解授权方式 --><!-- /items/queryItems.action = perms[item:query]/items/editItems.action = perms[item:edit] --><!-- 配置记住我或认证通过可以访问的地址 -->/index.jsp  = user/first.action = user/welcome.jsp = user<!-- /** = authc 所有url都必须认证通过才可以访问-->/** = authc<!-- /** = anon所有url都可以匿名访问 --></value></property></bean><!-- securityManager安全管理器 --><bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"><property name="realm" ref="customRealm" /><!-- 注入缓存管理器 --><property name="cacheManager" ref="cacheManager"/><!-- 注入session管理器 --><property name="sessionManager" ref="sessionManager" /><!-- 记住我 --><property name="rememberMeManager" ref="rememberMeManager"/></bean><!-- realm --><bean id="customRealm" class="cn.ssm.shiro.CustomRealm"><!-- 将凭证匹配器设置到realm中,realm按照凭证匹配器的要求进行散列 --><property name="credentialsMatcher" ref="credentialsMatcher"/></bean><!-- 凭证匹配器 --><bean id="credentialsMatcher"class="org.apache.shiro.authc.credential.HashedCredentialsMatcher"><property name="hashAlgorithmName" value="md5" /><property name="hashIterations" value="1" /></bean><!-- 缓存管理器 --><bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">    <property name="cacheManagerConfigFile" value="classpath:shiro-ehcache.xml"/>    </bean><!-- 会话管理器 -->    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">        <!-- session的失效时长,单位毫秒 -->        <property name="globalSessionTimeout" value="600000"/>        <!-- 删除失效的session -->        <property name="deleteInvalidSessions" value="true"/>    </bean><!-- 自定义form认证过虑器 --><!-- 基于Form表单的身份验证过滤器,不配置将也会注册此过虑器,表单中的用户账号、密码及loginurl将采用默认值,建议配置 --><bean id="formAuthenticationFilter" class="cn.ssm.shiro.CustomFormAuthenticationFilter "><!-- 表单中账号的input名称 --><property name="usernameParam" value="username" /><!-- 表单中密码的input名称 --><property name="passwordParam" value="password" /><!-- 记住我input的名称 --><property name="rememberMeParam" value="rememberMe"/> </bean><!-- rememberMeManager管理器,写cookie,取出cookie生成用户信息 --><bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager"><property name="cookie" ref="rememberMeCookie" /></bean><!-- 记住我cookie --><bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"><!-- rememberMe是cookie的名字 --><constructor-arg value="rememberMe" /><!-- 记住我cookie生效时间30天 --><property name="maxAge" value="2592000" /></bean>


2 0
原创粉丝点击