`

判断是否登录的拦截器CheckLoginFilter

阅读更多
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.io.IOException;

/**    
 * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面     
 * 配置参数    
 * checkSessionKey 需检查的在 Session 中保存的关键字     
 * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath     
 * notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath    
 */
public class CheckLoginFilter implements Filter {
	protected FilterConfig filterConfig = null;

	private String redirectURL = null;

	private List notCheckURLList = new ArrayList();

	private String sessionKey = null;

	public void doFilter(ServletRequest servletRequest,
			ServletResponse servletResponse, FilterChain filterChain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;

		HttpSession session = request.getSession();
		if (sessionKey == null) {
			filterChain.doFilter(request, response);
			return;
		}
		if ((!checkRequestURIIntNotFilterList(request))
				&& session.getAttribute(sessionKey) == null) {
			response.sendRedirect(request.getContextPath() + redirectURL);
			return;
		}
		filterChain.doFilter(servletRequest, servletResponse);
	}

	public void destroy() {
		notCheckURLList.clear();
	}

	private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
		String uri = request.getServletPath()
				+ (request.getPathInfo() == null ? "" : request.getPathInfo());
		return notCheckURLList.contains(uri);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		redirectURL = filterConfig.getInitParameter("redirectURL");
		sessionKey = filterConfig.getInitParameter("checkSessionKey");

		String notCheckURLListStr = filterConfig
				.getInitParameter("notCheckURLList");

		if (notCheckURLListStr != null) {
			StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
			notCheckURLList.clear();
			while (st.hasMoreTokens()) {
				notCheckURLList.add(st.nextToken());
			}
		}
	}
}
分享到:
评论

相关推荐

    登录拦截器(通用版)

    7. **URL路由与访问控制**:登录拦截器通常会根据URL来判断是否需要拦截。通过定义白名单或黑名单,可以决定哪些URL需要登录后才能访问。 8. **跨站请求伪造(CSRF)防护**:登录拦截器应包含对CSRF攻击的防御,...

    spring boot 登录拦截器

    在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...

    Springmvc登录拦截器Demo

    在Spring MVC框架中,登录拦截器是一个非常关键的组件,它负责在用户访问特定资源之前进行身份验证。本文将深入探讨如何使用Spring MVC的拦截器实现登录验证,并提供相关知识点。 1. **Spring MVC 拦截器简介** ...

    springboot拦截器实现拦截器 权限校验,登录demo

    本文将详细介绍如何在Spring Boot中实现拦截器以进行权限校验和登录验证,通过一个简单的Demo来阐述整个过程。 首先,我们需要创建一个自定义的拦截器类。这个类通常会继承`HandlerInterceptorAdapter`,这是一个...

    登录拦截器

    登录拦截器是Web开发中的一种常见机制,主要用于在用户访问特定资源或执行特定操作之前进行权限验证。在Spring、Struts2和Hibernate这三大框架的组合应用中,登录拦截器的作用尤为显著,它能确保只有经过身份验证的...

    Android-基于Arouter的登录拦截

    5. **全局异常处理**:为了覆盖所有可能的未登录访问,你还可以在全局异常处理中捕获`ArouterException`,并根据异常码判断是否是由于登录拦截导致的,从而进行相应处理。 6. **测试与优化**:完成以上步骤后,记得...

    ssm登录与查询拦截器demo

    拦截器可以在此处判断用户角色,决定是否允许执行查询。 5. **异常处理**:postHandle()和afterCompletion()方法可以用来处理资源释放或者异常情况,例如关闭数据库连接,或者处理在请求处理过程中抛出的异常。 在...

    JavaEE 拦截器用户登录案例源代码

    在登录拦截器中,通常会检查请求是否携带了有效的session信息,如用户ID或者令牌。如果没有,拦截器将阻止请求继续并重定向到登录页面,或者返回错误信息提示用户需要先登录。 3. **源码分析** - `Day01_...

    Jfinal通过拦截器实现登录验证

    本篇文章将详细讲解如何利用Jfinal的拦截器机制实现登录验证,确保用户在访问特定控制层方法之前必须完成登录。 首先,理解拦截器的概念至关重要。在Web开发中,拦截器是一种设计模式,它允许我们在请求被处理之前...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    通过过滤器或拦截器,我们可以检查每个请求的会话(Session)中是否存在有效的登录信息,如果没有,就将其重定向到登录页面。 6. **使用说明**: 在使用这个项目之前,你需要了解SpringBoot的基本配置和Thymeleaf...

    SSM+Ajax+maven+拦截器实现登录功能

    2. **编写拦截器类**:实现`HandlerInterceptor`接口,重写`preHandle()`方法进行预处理,判断用户是否已登录。 3. **Ajax请求**:前端使用jQuery或其他库发送Ajax登录请求,携带用户名和密码。 4. **Controller处理...

    uni-app 请求拦截器

    【uni-app请求拦截器】是基于uni-app框架实现的一种机制,它允许开发者在发送网络请求前和接收到响应后执行自定义的操作。这种机制对于统一处理请求头、数据格式、错误处理以及添加全局的请求前后的逻辑非常有用,极...

    jFinal拦截器验证登录

    5. **优化与扩展**:除了基本的登录验证,拦截器还可以进一步扩展,比如加入记住我功能的处理、登录超时的判断等。同时,我们还可以创建多个拦截器,按顺序执行,以便进行更复杂的业务逻辑处理。 总结,jFinal的...

    自定义拦截器,当输入为指定的用户名和密码的时候允许登录,否则返回登录页面进行登录。

    标题和描述中提到的自定义拦截器主要用于登录验证。当用户尝试访问受保护的资源时,这个拦截器会检查输入的用户名和密码是否与预设的正确值匹配。如果匹配,用户被允许继续操作;如果不匹配,拦截器将重定向用户回到...

    ssm+maven用拦截器实现登录小Demo

    然后将这个文件部署到服务器(如Tomcat)上,通过提供的演示地址访问应用程序,查看拦截器是否能正确拦截未登录用户的请求。 这个Demo提供了一个基础的SSM拦截器应用实例,对于初学者来说,这是一个很好的学习资源...

    使用struts2拦截器对登陆权限验证

    在这个方法中,我们可以检查请求上下文中的会话或cookie,以判断用户是否已登录。如果用户未登录,我们可以重定向到登录页面;否则,允许请求继续传递到下一个拦截器,直至到达Action。 ```java public class ...

    请求拦截器和响应拦截器.docx

    请求拦截器和响应拦截器 请求拦截器和响应拦截器是 Axios 库中提供的一种机制,用于在发送请求之前和响应数据返回之前对数据进行处理。下面是对这两个概念的详细解释: 请求拦截器 请求拦截器是指在发送请求之前...

    WebService之自定义拦截器(server+client)

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而WebService之自定义拦截器的实现,无论是对于服务器端还是客户端,都是为了增强服务的功能性和安全性。本文将深入探讨自定义拦截器的概念、作用以及...

    基于ssh拦截器框架Struts2拦截器的登录验证实现

    这个拦截器会在每个动作执行前检查 session 中是否有登录用户,如果有,则继续执行后续操作;否则,重定向到登录页面。在 struts.xml 配置文件中,我们需要声明这个拦截器,并将其应用于除 welcome 和 login 动作...

Global site tag (gtag.js) - Google Analytics