权限过滤器Filter

package com.baitw.struts.utils;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

/**
 * 
 * 权限过滤器
 * 
 * */

public class AuthorityFilter implements Filter {

	private FilterConfig config;
	
	//过滤器核心方法
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		//获取Filter配置参数
		String encoding=config.getInitParameter("encoding");
		String loginPage=config.getInitParameter("loginPage");
		String proLogin=config.getInitParameter("proLogin");
		//设置request编码
		request.setCharacterEncoding(encoding);
		HttpServletRequest requ=(HttpServletRequest) request;
		HttpSession session=requ.getSession(true);
		//获取客户请求页面
		String requestPath=requ.getServletPath();
		/*
		//获取cookie
		Cookie[] cookies=requ.getCookies();
		Cookie c=cookies[0];
		String val=c.getValue();
		*/
		/**
		 * 如果session范围内的user为null,即表明没有登录
		 * 且用户请求的既不是登录页面,也不是处理登录页面
		 * */
		if(session.getAttribute("username")==null
				&&!requestPath.endsWith(loginPage)
				&&!requestPath.endsWith(proLogin)
				){
			System.out.println("权限拦截器的消息:"+"终止");
			request.getRequestDispatcher(loginPage)
			.forward(request, response);
		}else{
			System.out.println("权限拦截器的消息:"+"放行");
			chain.doFilter(request, response);
		}
	}

	public void init(FilterConfig config) throws ServletException {
		// TODO Auto-generated method stub
		this.config=config;
	}
	
	public void destroy() {
		// TODO Auto-generated method stub
		this.config=null;
	}

}

<!-- 权限拦截器  -->
	<filter>
		<filter-name>authority</filter-name>
		<filter-class>com.baitw.struts.utils.AuthorityFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>
		<init-param>
			<param-name>loginPage</param-name>
			<param-value>/view/login.jsp</param-value>
		</init-param>
		<init-param>
			<param-name>proLogin</param-name>
			<param-value>/view/admin/main.jsp</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>authority</filter-name>
		<url-pattern>/admin/*</url-pattern>
	</filter-mapping>

猜你喜欢

转载自xiongjiajia.iteye.com/blog/1461424