过滤器(Filter)控制网站安全--权限控制

由于本人实习中,时间仓促,先把代码抛上来了..

以下代码是罗伟学长所写,本人觉得很值得借鉴。

public class SecurityCheckFilter implements Filter {
	private String failedForwardPage = "index.html";//出错转向主页面
	private Vector<String> managerPages = new Vector<String>(); // 保存管理员的页面,使一般用户不能访问,这个地方有待改进.

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
	 *      javax.servlet.ServletResponse, javax.servlet.FilterChain)
	 */
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest res = (HttpServletRequest) arg0;
		HttpServletResponse resp = (HttpServletResponse) arg1;
		String ip = res.getRemoteAddr(); // 获得访问机器的IP地址
		System.out.println("获得访问机器的IP地址:request.getRemoteAddr()="+ip);
		HttpSession session = res.getSession();

		if (ip.equals("0:0:0:0:0:0:0:1")) { // 表示通过远程登陆访问页面
			ip = InetAddress.getLocalHost().getHostAddress();
		}
		String requestPath = res.getServletPath();
		String requestURI = res.getRequestURI(); // 防止在IE中的地址栏直接输入地址访问.
		master.user.User user=(master.user.User)session.getAttribute("user");
		 System.out.println("getRemoteHost:"+ip+"getServletPath:"+requestPath+"requestURI:"+requestURI);
		if (user!=null &&  "11".equals(user.getAuthority())) // 优先让管理员登陆
		{// System.out.println("管理员登陆");
			arg2.doFilter(arg0, arg1);
		} else{//非管理员则进行过滤
			if (!managerPages.contains(requestPath)
					&& !requestURI.endsWith("/manageFrames2.htm")) {
				arg2.doFilter(arg0, arg1);
			} else {
				resp.sendRedirect(failedForwardPage);
			}
		}
	}

	/**
	 * 从数据库中判断用户机的IP是否注册
	 */
	

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig arg0) throws ServletException {
		String s = arg0.getInitParameter("failedForwardPage");
		if (s != null && "".equals(s.trim())) {
			failedForwardPage = s;
		}
		initManagerPages();
	}

	private void initManagerPages() {
		managerPages.add("/manageFrames2.htm");
		managerPages.add("/dealPoweroff.jsp");
		managerPages.add("/addMachine.jsp");
		managerPages.add("/deleteUserResult.jsp");
		managerPages.add("/delMachine.jsp");
		managerPages.add("/delMachineResult.jsp");
		managerPages.add("/helpMachine1.html");
		managerPages.add("/helpMachine2.html");
		managerPages.add("/helpMachine3.html");
		managerPages.add("/helpMachine4.html");
		managerPages.add("/helpUser1.html");
		managerPages.add("/helpUser2.html");
		managerPages.add("/helpUser3.html");
		managerPages.add("/MachineState.jsp");
		managerPages.add("/machineControl.jsp");
		
		managerPages.add("/reMachine.jsp");
		managerPages.add("/reMachineResult.jsp");
		managerPages.add("/SystemConfiguration.jsp");
		managerPages.add("/updateUser.jsp");
		managerPages.add("/updateUserResult.jsp");
		managerPages.add("/upload.jsp");
		managerPages.add("/uploadSuccess(1).jsp");
		managerPages.add("/viewMachineState.jsp");
		managerPages.add("/queryUser.jsp");
		managerPages.add("/queryUserResult.jsp");
		managerPages.add("/addUser.jsp");
		managerPages.add("/addUserResult.jsp");
		managerPages.add("/deleteUser.jsp");
	}

}

 声明:以上代码非本人所作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值