需要写个拦截器,当用户没有登录的时候某些页面是不能访问的
用法将需要登录后访问的文件全部放在一个文件夹中,这里是logined文件夹
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.tlt.app.bean.Useraccount;
import com.tlt.app.util.Constants;
public class SessionFilter implements Filter{
private List list = new ArrayList();
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
String path=((HttpServletRequest)request).getServletPath();
// System.out.println("path="+path);
for(int i=0;i<list.size();i++){
if(path.indexOf((String)list.get(i))!=-1){//需要拦截
if (((HttpServletRequest) request).getSession().getAttribute(Constants.USER_KEY) == null) {//session不存在需要拦截
String contextPath=((HttpServletRequest)request).getContextPath();
// System.out.println("ContextPath="+contextPath);
((HttpServletResponse)response).sendRedirect(contextPath+"/login.jsp?toPath="+servletPath);//记录下登录后需要跳转到的页面,比如:/logined/account.jsp
}else{
chain.doFilter(request, response);
}
break;
}else{
chain.doFilter(request, response);
}
}
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
//初始化需要拦截的文件夹
String include = filterConfig.getInitParameter("include");
if (include != null) {
StringTokenizer st = new StringTokenizer(include, ",");
list.clear();
while (st.hasMoreTokens()) {
list.add(st.nextToken());
}
}
}
}
可以使用多个文件夹,只需要将<param-value>中的值之间用“,”隔开。
<filter>
<filter-name>sessionFilter</filter-name>
<filter-class>com.tlt.app.filter.SessionFilter</filter-class>
<init-param>
<param-name>include</param-name>
<param-value>logined</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
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开发中,拦截器是一种设计模式,它允许我们在请求被处理之前...
在这个案例中,我们可以创建一个拦截器来检查用户是否已登录,如果未登录,则重定向到登录页面。 过滤器(Filter)是Servlet规范的一部分,它在请求到达目标Servlet之前和响应离开Servlet之后执行。在Spring Boot中...
通过过滤器或拦截器,我们可以检查每个请求的会话(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 ...