关于shiro 总是302的问题

来源:互联网 发布:浙江大学 网络服务中心 编辑:程序博客网 时间:2024/05/19 15:21

我的原因是使用了authc,由于autuc对应的过滤器FormAuthenticationFilter中onAccessDenied方法返回的值都为false,所以访问url时会一直进行循环重定向,解决方案:重写onAccessDenied方法,并注入到shiroFiter中。

附上shiro配置文件:

<!-- shiroFilter --><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">   <property name="securityManager" ref="securityManager" />   <!-- 设定角色的登录链接,这里为cas登录页面的链接可配置回调地址  -->   <!-- 登录地址 -->   <property name="loginUrl" value="/login.html"/>   <!-- 登录后跳转到业务页面 -->   <property name="successUrl" value="/index.do"/>   <!-- 错误页面 -->   <property name="unauthorizedUrl" value="/denied.html"/>   <property name="filters">      <map>         <!--将重写了的FormAuthenticationFilter.onAccessDenied方法的类注入到其中-->         <entry key="authc" value-ref="formAuthenticationFilter"></entry>      </map>   </property>   <property name="filterChainDefinitions">      <value>          /login.html=anon         <!--配置静态资源-->         /js/**=anon         /templates/**=anon         /assets/**=anon         /css/**=anon         <!--权限设置-->         /index.do=authc         /user/login.do=anon         /**=authc        </value>   </property></bean><!-- 重写FormAuthenticationFilteronAccessDenied方法的自定义过滤器 --><bean id="formAuthenticationFilter" class="com.jd.risk.giasys.service.realm.filter.MyFilter" />

重写onAccessDenied方法:

package com.jd.risk.giasys.service.realm.filter;import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/** * Created by jianghaisong on 2017/12/17. */public class MyFilter extends FormAuthenticationFilter{    private Logger log = LoggerFactory.getLogger(MyFilter.class);    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {       //进行重写,业务逻辑    }}

原创粉丝点击