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为我的系统中所过滤的。
分享到:
相关推荐
登录拦截器是Web应用中一种常见的安全控制手段,能够有效地控制用户访问权限,保护系统资源的安全。通过本文介绍的简单实现案例,我们不仅可以了解到登录拦截器的基本原理,还能掌握其实现过程中的关键步骤和技术...
防止未登录用户直接访问特定资源是确保网站安全的基本措施。这通常通过拦截器(Interceptor)或者过滤器(Filter)来实现。在Servlet中,我们可以创建一个实现了javax.servlet.Filter接口的类,然后在web.xml中配置...
- **安全控制**:使用Filter检查用户登录状态,未登录的用户不能访问某些资源。 - **日志记录**:记录每个请求的详细信息,便于调试和监控。 - **字符编码转换**:确保请求和响应的字符编码一致,避免乱码问题。 ...
标题“Java禁止直接URL访问图片”涉及到的是网络资源保护和权限控制的问题,主要知识点包括: 1. **HTTP请求与响应**: 当用户通过浏览器或其他客户端工具输入一个URL来访问图片时,实际上是发送了一个HTTP GET...
在这个"用DAO实现的用户登录系统"中,我们可以看到以下几个关键知识点: 1. **DAO模式**:DAO模式的核心是提供一个接口或抽象类,定义了对数据库的基本操作,如增删查改。具体的数据库操作由实现了这个接口或继承了...
- **安全控制**:Filter可以用来检查请求是否携带正确的认证信息,阻止未授权的访问。 - **性能优化**:通过对响应进行GZIP压缩,可以减少网络传输的数据量,提高页面加载速度。 - **日志记录**:记录每个请求的...
在这个项目中,开发者通常会创建一个简单的用户管理系统,允许用户进行登录、注册,并通过过滤器(Filter)实现对页面访问的权限拦截。以下是对这些知识点的详细解释: 1. **Java Web应用**:Java Web应用是基于...
下面将详细解释`Filter`的工作原理以及如何运用它来实现登录验证。 ### Filter工作原理 `Filter`是Java Web应用程序中的一个接口,位于`javax.servlet`包下。它提供了一种机制,可以在HTTP请求被处理前和处理后...
4. **拦截非授权访问**:如果用户尝试访问未授权的资源,`Filter`应拦截请求,返回错误消息或重定向至合适的页面。 **三、同一账号只能登录一台设备** 1. **会话唯一性**:当用户在新设备上登录时,我们需要检测已...
通过使用Java EE中的过滤器,我们可以有效地管理项目的字符编码,并且可以实现对未登录用户的访问权限控制。这两种方法不仅可以提高系统的安全性,还能提升用户体验。在实际项目开发过程中,开发者可以根据具体需求...
1. **登录验证**:用户首次访问系统时,如果没有找到有效的Cookie,会被重定向到登录页面进行身份验证。 2. **设置Cookie**:验证成功后,服务器创建一个包含用户信息的SSO Cookie,并设置其为安全和HttpOnly,以...
在SpringBoot中,我们可以自定义Filter实现预处理和后处理功能,例如检查用户是否已登录,未登录时重定向到登录页面。 4. **拦截器(Interceptor)**: Spring MVC提供了拦截器(Interceptor)机制,它同样可以...
通过以上步骤,我们可以实现一个基于RBAC的权限控制系统,利用`Filter`对用户请求进行拦截,确保只有拥有相应角色的用户才能访问特定的页面或功能。这种方式既提高了系统的安全性,也简化了权限管理的复杂度。 在...
在Java登录系统中,数据库连接是必不可少的,通常使用JDBC(Java Database Connectivity)来实现。JDBC是Java API,允许Java应用程序与各种数据库进行交互。开发者需要导入对应的数据库驱动,如MySQL的`mysql-...
我们可以用Java Servlet API和Filter来实现资源的保护,检查每个请求的令牌有效性。 3. **客户端(Client)**:客户端是用户使用的服务,需要获取用户的授权以访问资源。在Java中,可以使用HttpURLConnection或...
这个过滤器会在用户访问受保护的页面之前进行拦截,如果发现用户会话已经超时或者不存在,将重定向到登录页面。在本例中,我们将探讨如何实现这样一个过滤器以及相关的配置。 首先,`web.xml` 是Java Web应用程序的...
例如,当用户在A系统登录后,A系统将登录状态通过Cookie或JWT发送给用户,用户访问B系统时,携带这个信息,B系统验证后即可实现单态登录。 4. **过滤器(Filter)**: - 通常,我们会使用Servlet Filter来拦截所有...
Java Servlet Filter实现全站动态转静态是一种常见的优化技术,它能提高网站的访问速度和搜索引擎友好性。在本文中,我们将深入探讨这个主题,并通过实际的代码示例来理解其工作原理。 首先,Servlet Filter是Java ...
- **权限控制**:通过`Filter`实现对用户的访问权限验证。 - **日志记录**:记录每个请求的基本信息,如URL、参数等。 - **安全过滤**:过滤掉恶意脚本、SQL注入等潜在威胁。 - **性能优化**:缓存静态资源,减少...
单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在Java Web环境中实现单点登录,可以提高用户体验,减少用户记忆多套账号密码的负担,...