Filter 应用之防盗链

public class UseFilter implements Filter {
    
    
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
    
    
		// 获取用户信息
		// 1. 获取session
		HttpServletRequest req     = (HttpServletRequest) request;
		HttpSession        session = req.getSession();
		// 2. 从session中获取用户信息
		Object user = session.getAttribute("user");
//		Object user = ((HttpServletRequest) request).getSession().getAttribute("user");
		// 判断用户是否登录
		if (user == null) {
    
    
			// 用户未登录 —— 跳转到登录页面
			//  跳转路径
//			String path = "";
			// 1. 使用请求转发
//			request.getRequestDispatcher(path).forward(request, response);
			// 2. 使用请求重定向
//			((HttpServletResponse) response).sendRedirect(path);
		} else {
    
    
			// 用户已经登录 —— 放行
			chain.doFilter(request, response);
		}
	}
}

  需要注意的几点

  1. ServletRequest 对象不能直接获取 Session,需要先强制类型转换为 HttpServletRequest 对象,再使用 getSession() 方法获取 HttpSession ;
  2. 如果用户未登录,就需要进行页面跳转,跳转到注册登录页面,此时使用请求转发和请求重定向都可,看是否在跳转的页面中需要目前页面的数据选择跳转方式。

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/114013344