`
jie_bosshr
  • 浏览: 143130 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java采用Filter实现用户未登陆不能访问系统资源

阅读更多
1 Filter:
import java.io.IOException;

package com.accp.filter;
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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

public class AuthFilter extends HttpServlet implements Filter {

	private static Logger logger = Logger.getLogger(AuthFilter.class.getName());
	private static final long serialVersionUID = 1L;

	public void doFilter(ServletRequest srequest, ServletResponse sresponse,
			FilterChain filterchain) throws IOException, ServletException {
		
		HttpServletRequest request = (HttpServletRequest) srequest;
		HttpServletResponse response = (HttpServletResponse) sresponse;
		HttpSession session = request.getSession();
		String url = request.getRequestURI();
		url = url.substring(url.lastIndexOf("/") + 1, url.length());
		/*
		* 1:login!doLogin.shtml表示用户登录action
		* 2:index.jsp(说明:在我的系统中index.jsp动态切换login.jsp或者系统组件下载download.jsp)		
		* 3:error.jsp表示出错后进入index.jsp
		* 4:login.jsp表示用户登录界面
		*/
		if (!url.equals("login!doLogin.shtml") && !url.equals("index.jsp") && !url.equals("error.jsp") 
			&& !url.equals("login.jsp") && !url.equals("download.jsp") && !url.equals("downloadfile!downloadFile.shtml")) {
			if (session == null || session.getAttribute("user") == null) {
				logger.info(this.getClass().getName() + " method doFilter() -->>> session过期!");
				response.sendRedirect(request.getContextPath() + "/error.jsp");
			} else {
				filterchain.doFilter(srequest, sresponse);
			}
		} else
			filterchain.doFilter(srequest, sresponse);

	}

	public void init(FilterConfig arg0) throws ServletException {
	
	}

	public void destroy() {
	}
2 xml:
<filter>
	<filter-name>authFilter</filter-name>
	<filter-class>com.accp.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>authFilter</filter-name>
	<url-pattern>*.action</url-pattern>
	<url-pattern>*.jsp</url-pattern>
	<url-pattern>*.do</url-pattern>
	<url-pattern>*.shtml</url-pattern>
</filter-mapping>

说明:*.action、*.jsp、*.do、*.shtml为我的系统中所过滤的。
分享到:
评论

相关推荐

    JAVA登录拦截器,查看用户是否登录过,未登录禁止访问页面

    登录拦截器是Web应用中一种常见的安全控制手段,能够有效地控制用户访问权限,保护系统资源的安全。通过本文介绍的简单实现案例,我们不仅可以了解到登录拦截器的基本原理,还能掌握其实现过程中的关键步骤和技术...

    自动登陆+防止未登录直接访问+权限控制

    防止未登录用户直接访问特定资源是确保网站安全的基本措施。这通常通过拦截器(Interceptor)或者过滤器(Filter)来实现。在Servlet中,我们可以创建一个实现了javax.servlet.Filter接口的类,然后在web.xml中配置...

    Java Filter相关资料

    - **安全控制**:使用Filter检查用户登录状态,未登录的用户不能访问某些资源。 - **日志记录**:记录每个请求的详细信息,便于调试和监控。 - **字符编码转换**:确保请求和响应的字符编码一致,避免乱码问题。 ...

    java禁止直接url访问图片

    标题“Java禁止直接URL访问图片”涉及到的是网络资源保护和权限控制的问题,主要知识点包括: 1. **HTTP请求与响应**: 当用户通过浏览器或其他客户端工具输入一个URL来访问图片时,实际上是发送了一个HTTP GET...

    用DAO实现的用户登录系统

    在这个"用DAO实现的用户登录系统"中,我们可以看到以下几个关键知识点: 1. **DAO模式**:DAO模式的核心是提供一个接口或抽象类,定义了对数据库的基本操作,如增删查改。具体的数据库操作由实现了这个接口或继承了...

    Java-filter测试程序

    - **安全控制**:Filter可以用来检查请求是否携带正确的认证信息,阻止未授权的访问。 - **性能优化**:通过对响应进行GZIP压缩,可以减少网络传输的数据量,提高页面加载速度。 - **日志记录**:记录每个请求的...

    Java登录注册列表小项目和Filter测试代码

    在这个项目中,开发者通常会创建一个简单的用户管理系统,允许用户进行登录、注册,并通过过滤器(Filter)实现对页面访问的权限拦截。以下是对这些知识点的详细解释: 1. **Java Web应用**:Java Web应用是基于...

    用filter实现验证登录

    下面将详细解释`Filter`的工作原理以及如何运用它来实现登录验证。 ### Filter工作原理 `Filter`是Java Web应用程序中的一个接口,位于`javax.servlet`包下。它提供了一种机制,可以在HTTP请求被处理前和处理后...

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    4. **拦截非授权访问**:如果用户尝试访问未授权的资源,`Filter`应拦截请求,返回错误消息或重定向至合适的页面。 **三、同一账号只能登录一台设备** 1. **会话唯一性**:当用户在新设备上登录时,我们需要检测已...

    用户登录过滤相关页面,过滤URL越权访问

    通过使用Java EE中的过滤器,我们可以有效地管理项目的字符编码,并且可以实现对未登录用户的访问权限控制。这两种方法不仅可以提高系统的安全性,还能提升用户体验。在实际项目开发过程中,开发者可以根据具体需求...

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

    1. **登录验证**:用户首次访问系统时,如果没有找到有效的Cookie,会被重定向到登录页面进行身份验证。 2. **设置Cookie**:验证成功后,服务器创建一个包含用户信息的SSO Cookie,并设置其为安全和HttpOnly,以...

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

    在SpringBoot中,我们可以自定义Filter实现预处理和后处理功能,例如检查用户是否已登录,未登录时重定向到登录页面。 4. **拦截器(Interceptor)**: Spring MVC提供了拦截器(Interceptor)机制,它同样可以...

    filter 实现权限控制

    通过以上步骤,我们可以实现一个基于RBAC的权限控制系统,利用`Filter`对用户请求进行拦截,确保只有拥有相应角色的用户才能访问特定的页面或功能。这种方式既提高了系统的安全性,也简化了权限管理的复杂度。 在...

    java一个登录系统

    在Java登录系统中,数据库连接是必不可少的,通常使用JDBC(Java Database Connectivity)来实现。JDBC是Java API,允许Java应用程序与各种数据库进行交互。开发者需要导入对应的数据库驱动,如MySQL的`mysql-...

    纯java实现的OAuth2流程

    我们可以用Java Servlet API和Filter来实现资源的保护,检查每个请求的令牌有效性。 3. **客户端(Client)**:客户端是用户使用的服务,需要获取用户的授权以访问资源。在Java中,可以使用HttpURLConnection或...

    JAVA用户登录超时过滤器和文件配置

    这个过滤器会在用户访问受保护的页面之前进行拦截,如果发现用户会话已经超时或者不存在,将重定向到登录页面。在本例中,我们将探讨如何实现这样一个过滤器以及相关的配置。 首先,`web.xml` 是Java Web应用程序的...

    Java实现的单态登陆

    例如,当用户在A系统登录后,A系统将登录状态通过Cookie或JWT发送给用户,用户访问B系统时,携带这个信息,B系统验证后即可实现单态登录。 4. **过滤器(Filter)**: - 通常,我们会使用Servlet Filter来拦截所有...

    java servletfilter实现全站动转静

    Java Servlet Filter实现全站动态转静态是一种常见的优化技术,它能提高网站的访问速度和搜索引擎友好性。在本文中,我们将深入探讨这个主题,并通过实际的代码示例来理解其工作原理。 首先,Servlet Filter是Java ...

    java filter

    - **权限控制**:通过`Filter`实现对用户的访问权限验证。 - **日志记录**:记录每个请求的基本信息,如URL、参数等。 - **安全过滤**:过滤掉恶意脚本、SQL注入等潜在威胁。 - **性能优化**:缓存静态资源,减少...

    最新java实现简单的单点登录

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在Java Web环境中实现单点登录,可以提高用户体验,减少用户记忆多套账号密码的负担,...

Global site tag (gtag.js) - Google Analytics