`
jessen163
  • 浏览: 466499 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

判断是否登录的拦截器SessionFilter

阅读更多
需要写个拦截器,当用户没有登录的时候某些页面是不能访问的
用法将需要登录后访问的文件全部放在一个文件夹中,这里是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>



<session-config>
<session-timeout>30 </session-timeout>
</session-config>



来指定30分钟超时
分享到:
评论

相关推荐

    登录拦截器(通用版)

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

    spring boot 登录拦截器

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

    Android-基于Arouter的登录拦截

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

    Springmvc登录拦截器Demo

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

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

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

    登录拦截器

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

    基于Springboot前后端分离式,利用拦截器完成登录拦截的+源代码+文档说明

    基于Springboot前后端分离式,利用拦截器完成登录拦截的demo ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信...

    ssm登录与查询拦截器demo

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

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

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

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

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

    spring boot 拦截器拦截/Filter 过滤session案例

    在这个案例中,我们可以创建一个拦截器来检查用户是否已登录,如果未登录,则重定向到登录页面。 过滤器(Filter)是Servlet规范的一部分,它在请求到达目标Servlet之前和响应离开Servlet之后执行。在Spring Boot中...

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

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

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

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

    jFinal拦截器验证登录

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

    uni-app 请求拦截器

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

    SpringBoot拦截器实现对404和500等错误的拦截

    拦截器允许我们在请求被处理之前或之后执行自定义逻辑,比如身份验证、日志记录、权限检查等。在本文中,我们将专注于如何使用SpringBoot拦截器来处理404和500等错误。 首先,创建自定义拦截器类并实现`...

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics