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应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...
5. **全局异常处理**:为了覆盖所有可能的未登录访问,你还可以在全局异常处理中捕获`ArouterException`,并根据异常码判断是否是由于登录拦截导致的,从而进行相应处理。 6. **测试与优化**:完成以上步骤后,记得...
在Spring MVC框架中,登录拦截器是一个非常关键的组件,它负责在用户访问特定资源之前进行身份验证。本文将深入探讨如何使用Spring MVC的拦截器实现登录验证,并提供相关知识点。 1. **Spring MVC 拦截器简介** ...
本文将详细介绍如何在Spring Boot中实现拦截器以进行权限校验和登录验证,通过一个简单的Demo来阐述整个过程。 首先,我们需要创建一个自定义的拦截器类。这个类通常会继承`HandlerInterceptorAdapter`,这是一个...
登录拦截器是Web开发中的一种常见机制,主要用于在用户访问特定资源或执行特定操作之前进行权限验证。在Spring、Struts2和Hibernate这三大框架的组合应用中,登录拦截器的作用尤为显著,它能确保只有经过身份验证的...
基于Springboot前后端分离式,利用拦截器完成登录拦截的demo ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信...
拦截器可以在此处判断用户角色,决定是否允许执行查询。 5. **异常处理**:postHandle()和afterCompletion()方法可以用来处理资源释放或者异常情况,例如关闭数据库连接,或者处理在请求处理过程中抛出的异常。 在...
在登录拦截器中,通常会检查请求是否携带了有效的session信息,如用户ID或者令牌。如果没有,拦截器将阻止请求继续并重定向到登录页面,或者返回错误信息提示用户需要先登录。 3. **源码分析** - `Day01_...
本篇文章将详细讲解如何利用Jfinal的拦截器机制实现登录验证,确保用户在访问特定控制层方法之前必须完成登录。 首先,理解拦截器的概念至关重要。在Web开发中,拦截器是一种设计模式,它允许我们在请求被处理之前...
通过过滤器或拦截器,我们可以检查每个请求的会话(Session)中是否存在有效的登录信息,如果没有,就将其重定向到登录页面。 6. **使用说明**: 在使用这个项目之前,你需要了解SpringBoot的基本配置和Thymeleaf...
2. **编写拦截器类**:实现`HandlerInterceptor`接口,重写`preHandle()`方法进行预处理,判断用户是否已登录。 3. **Ajax请求**:前端使用jQuery或其他库发送Ajax登录请求,携带用户名和密码。 4. **Controller处理...
5. **优化与扩展**:除了基本的登录验证,拦截器还可以进一步扩展,比如加入记住我功能的处理、登录超时的判断等。同时,我们还可以创建多个拦截器,按顺序执行,以便进行更复杂的业务逻辑处理。 总结,jFinal的...
【uni-app请求拦截器】是基于uni-app框架实现的一种机制,它允许开发者在发送网络请求前和接收到响应后执行自定义的操作。这种机制对于统一处理请求头、数据格式、错误处理以及添加全局的请求前后的逻辑非常有用,极...
拦截器允许我们在请求被处理之前或之后执行自定义逻辑,比如身份验证、日志记录、权限检查等。在本文中,我们将专注于如何使用SpringBoot拦截器来处理404和500等错误。 首先,创建自定义拦截器类并实现`...
标题和描述中提到的自定义拦截器主要用于登录验证。当用户尝试访问受保护的资源时,这个拦截器会检查输入的用户名和密码是否与预设的正确值匹配。如果匹配,用户被允许继续操作;如果不匹配,拦截器将重定向用户回到...
然后将这个文件部署到服务器(如Tomcat)上,通过提供的演示地址访问应用程序,查看拦截器是否能正确拦截未登录用户的请求。 这个Demo提供了一个基础的SSM拦截器应用实例,对于初学者来说,这是一个很好的学习资源...
在这个方法中,我们可以检查请求上下文中的会话或cookie,以判断用户是否已登录。如果用户未登录,我们可以重定向到登录页面;否则,允许请求继续传递到下一个拦截器,直至到达Action。 ```java public class ...
请求拦截器和响应拦截器 请求拦截器和响应拦截器是 Axios 库中提供的一种机制,用于在发送请求之前和响应数据返回之前对数据进行处理。下面是对这两个概念的详细解释: 请求拦截器 请求拦截器是指在发送请求之前...