shiro使用框架,自定义过滤器

1、shiro配置文件配置

<!-- 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="/" />
<property name="filterChainDefinitions">
         <value>
                      /css/** = anon
                   /fonts/** = anon
      /img/** = anon
      /js/** = anon
      /login = authc
      /logout = logout
      /** = myaAuth,authc
   </value>
</property>
<!-- 自定义filter配置 -->
<property name="filters">
  <map>
    <entry key="myaAuth" value-ref="myaAuthFilter" />
  </map>
</property>
</bean>
<bean id="myaAuthFilter" class="com.xxx.shiro.MyAuthFilter" />

2、自定义过滤器代码

package com.xxx.shiro;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.web.servlet.AdviceFilter;

public class MyAuthFilter extends AdviceFilter {

@Override
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
    if (isRule(request)) {//socket

    } else {//不符合规则请求重定向为登录页面
      httpServletResponse.sendRedirect("/login");
    }
    return super.preHandle(request, response);
}
private boolean isRule(ServletRequest request){
    String header ="rule";//规则
    if("rule".equalsIgnoreCase(header)){
      return Boolean.TRUE;
    }
      return Boolean.FALSE;
    }
}

}

posted on 2018-08-02 15:48  zc_成  阅读(395)  评论(0编辑  收藏  举报

导航