`
段海波
  • 浏览: 318314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决Filter对用户登录验证产生死循环

    博客分类:
  • j2ee
阅读更多

要对后台管理文件夹下的所有管理页面进行过滤,阻止未登录的用户访问这些页面,在操作中出现了重定向死循环,经过思考,最终找到了解决办法,现在把代码贴出来。

Filter过滤器类

package dsh.bikegis.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginCheckFilter implements Filter {

	public void init(FilterConfig filterConfig) throws ServletException {
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		HttpSession session = req.getSession(true);

		// 从session里取的用户名信息
		String username = (String) session.getAttribute("userName");
		String   uri   =   ((HttpServletRequest)   request).getRequestURI(); 
		// 判断如果没有取到用户信息,就跳转到登陆页面
		if (username != null || !("".equals(username))|| uri.endsWith("index.html") ) {
			
			chain.doFilter(request, response);
		} else {
			// 跳转到登陆页面
			RequestDispatcher dispatcher = request.getRequestDispatcher("index.html");  
			dispatcher.forward(request, response);  
			
		}
	}

	public void destroy() {
	}
}
 web.xml配置过滤器:<filter>
          <filter-name>yes</filter-name>  
          <filter-class>dsh.bikegis.filter.LoginCheckFilter</filter-class>  
      </filter>  
   
      <filter-mapping>  
          <filter-name>yes</filter-name>  
          <url-pattern>/manage/*</url-pattern>  
      </filter-mapping>  

 //登錄驗證

	public String loginUser(){
		if(this.us.getUser(user)!=null){
			 ActionContext.getContext().getSession().put("userName",user.getUsername());  
			return ActionSupport.SUCCESS;
		}
		this.errMesg="密碼或者用戶名錯誤,請重新輸入!";
		return ActionSupport.ERROR;
	}

 

其中登录验证为 struts2中的Action,前台登录页面访问这个Action,成功的话就把用户名放入session中;在Filter中获得session中存放的字符串,如果不为空,或者是登录页面(此处为index.html)的话则验证成功,就放行,让其具有访问manage目录下的所有文件。否则跳转到index.html

 

 

 

 

分享到:
评论

相关推荐

    用filter实现验证登录

    在Web开发中,验证登录是确保用户安全性的重要环节。这里我们关注的是如何使用`Filter`来实现这个功能。`Filter`是Java Servlet API中的一个重要组件,它允许我们在请求到达目标Servlet之前或之后对请求和响应进行...

    利用Filter拦截用户登录

    本文将详细讲解如何利用Filter拦截用户登录,确保只有已登录的用户才能访问特定页面。 首先,我们需要了解`Filter`的基本概念。在Java Web中,Filter是Servlet API的一部分,它可以通过实现`javax.servlet.Filter`...

    使用过滤器实现判断用户是否登录验证.

    在这个场景下,我们讨论的是如何使用过滤器来实现用户登录验证的功能。下面将详细解释这一过程。 首先,我们需要了解过滤器的基本概念。在Java Web应用中,过滤器是实现了javax.servlet.Filter接口的类。它们通过在...

    网络应用开发 之使用Filter实现用户自动登录功能

    在这个实验中,Filter将用于检查用户的Cookie,如果找到有效的登录信息,就自动为用户登录。 Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并在后续的请求中返回给服务器。它可以用来存储用户的状态信息...

    检验用户登录信息(使有Filter,最终版)

    标题中的“检验用户登录信息(使用Filter,最终版)”是指在Web开发中,通过使用Servlet Filter技术来验证用户登录状态的一种实现方式。Filter是Java Servlet API中的一部分,它允许我们在请求到达目标Servlet或JSP...

    使用过滤器完成用户登录验证

    在"使用过滤器完成用户登录验证"的场景中,我们将创建一个过滤器类,该类实现了Filter接口并重写了doFilter()方法。在这个方法里,我们可以检查请求中是否有有效的登录信息,例如通过检查请求头中的session或cookie...

    java用户登录验证码 filter过滤

    本文将深入探讨如何在用户登录界面实现基于Servlet的验证码功能,并结合Filter进行验证。 首先,验证码的生成通常涉及到以下几个步骤: 1. **生成随机字符串**:验证码一般由4-6个随机字母或数字组成,可以通过...

    使用Filter实现登录权限验证

    本文将深入探讨如何使用Filter实现登录权限验证,确保只有已登录的用户才能访问特定的受保护资源。 首先,我们来看一下标题和描述中提到的核心概念——Filter登录权限验证。这是通过Filter来检查用户是否已经登录,...

    Filter使用范例--登陆验证

    在这个"Filter使用范例--登陆验证"的主题中,我们将深入探讨如何利用Filter进行用户登录验证,以确保只有经过身份验证的用户才能访问受保护的资源。 Filter接口在`javax.servlet`包中定义,它提供了`doFilter()`...

    过滤器验证用户是否已经登录

    为了能够使用 Servlet 过滤器实现用户对 JSP 页面访问的合法性验证,需要根据用户登录号和密码等与数据库中的信息相比较,若能匹配成功,则是用户登录成功,就用 session 对象存储该用户的标识。 知识点4: Servlet ...

    jsp filter 过滤器判断用户是否登录

    通过使用过滤器(Filter),可以在请求到达目标资源(如Servlet或JSP页面)之前进行处理,例如实现登录状态检查、权限验证等功能。下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断...

    Java项目登录验证

    这个项目展示了如何结合Servlet、Filter和DAO模式来实现一个安全的登录验证系统,同时利用Cookie和Session管理用户状态。理解并掌握这些组件和流程对于构建任何Web应用程序的安全基础至关重要。

    servlet之Filter使用范例--登陆验证

    在登录验证的场景下,Filter的主要任务是在用户访问受保护的页面之前检查用户是否已经登录。如果用户未登录,我们可以重定向他们到登录页面;反之,如果用户已登录,允许他们访问受保护的资源。 以下是一个简单的...

    使用filter验证session用户和页面缓存问题处理

    为了解决这个问题,我们可以利用Servlet的Filter机制来拦截和验证用户的请求。Filter是一个在请求被实际处理之前运行的组件,它可以在请求到达目标Servlet之前进行预处理,或者在响应返回给客户端之后进行后处理。在...

    PHP filter_var 验证邮箱、IP、URL的格式

    `filter_var`允许你对单一变量进行过滤和验证,而`filter_var_array`则用于处理数组中的多个变量,`filter_input`则专门用于处理HTTP输入变量。 ### `filter_var`的基本用法 `filter_var`函数的基本语法是: ```...

    jsp+servlet登录验证过滤器

    在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...

    Java Filter 限制用户浏览权限

    本话题主要关注如何使用Java Filter来限制用户的浏览权限,确保只有经过身份验证和授权的用户才能访问特定的资源。这在构建安全的Web应用程序时至关重要。 首先,我们需要了解Java Filter的基本概念。Filter是...

    单点登录的demo(使用cookie+filter实现)

    当用户在登录中心成功验证身份后,服务器会设置一个包含用户信息的特殊Cookie,并将其发送给浏览器。这个Cookie在后续请求中被发送到所有相关应用,以此来判断用户是否已授权登录。 **二、Filter原理** Filter是...

    过滤器验证用户登录.rar

    在这个"过滤器验证用户登录"项目中,我们关注的是如何利用过滤器来实现用户身份的验证,确保只有已登录的用户才能访问特定的Web资源。这个项目结合了IntelliJ IDEA这一强大的Java开发工具,为开发者提供了高效且专业...

Global site tag (gtag.js) - Google Analytics