import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.io.IOException;
/**
* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面
* <p>
* 配置参数
* <p>
* checkSessionKey 需检查的在 Session 中保存的关键字<br/> redirectURL
* 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath<br/> notCheckURLList
* 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath<br/>
*/
public class RequestDumperFilter implements Filter {
protected FilterConfig filterConfig = null;
private String redirectURL = null;
private List notCheckURLList = new ArrayList();
private String sessionKey = null;
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
if (sessionKey == null) {
filterChain.doFilter(request, response);
return;
}
if ((!checkRequestURIIntNotFilterList(request))
&& session.getAttribute(sessionKey) == null) {
response.sendRedirect(request.getContextPath() + redirectURL);
return;
}
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy() {
notCheckURLList.clear();
}
private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
String uri = request.getServletPath()
+ (request.getPathInfo() == null ? "" : request.getPathInfo());
for(int i=0;i<notCheckURLList.size();i++){
if(uri.equalsIgnoreCase((String)notCheckURLList.get(i)))
return true;
}
return false;
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
redirectURL = filterConfig.getInitParameter("redirectURL");
sessionKey = filterConfig.getInitParameter("checkSessionKey");
String notCheckURLListStr = filterConfig
.getInitParameter("notCheckURLList");
if (notCheckURLListStr != null) {
StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
notCheckURLList.clear();
while (st.hasMoreTokens()) {
notCheckURLList.add(st.nextToken());
}
}
}
}
分享到:
相关推荐
这个过滤器的作用是检测用户是否已登陆,如果用户未登陆,将其重定向到登陆页面。实现这个过滤器的关键是使用HttpSession对象来存储用户的登陆信息。 在这个过滤器中,我们使用了Java Servlet API来实现filter接口...
在Java Web开发中,过滤器(Filter)是一个强大的工具,常用于实现各种需求,如登录操作的处理。本文将深入探讨如何使用过滤器进行登录操作,以及这一过程中的相关知识点。 首先,我们要理解过滤器的基本概念。在...
如果过滤器检测到当前请求没有有效的session,那么可以判断用户未登录。 9. **安全考虑**:在实际应用中,需要考虑安全性问题,例如使用加密存储密码、防止SQL注入、XSS攻击等。 10. **最佳实践**:为了保持代码的...
二、检测用户是否登陆的过滤器 `CheckLoginFilter`用于验证用户是否已经登录。如果用户未登录,它会将请求重定向到登录页面。这个过滤器可以配置多个参数,如检查的session关键字、重定向URL以及不需要检查的URL列表...
二、检测用户是否登陆的过滤器 `CheckLoginFilter`是一个用于验证用户是否已登录的过滤器。如果用户未登录,它将重定向到登录页面。该过滤器可以通过配置参数来定制,如`checkSessionKey`(检查的会话关键字)、`...
用户登录检测过滤器用于检查用户是否已经登录,通常在用户尝试访问需要权限的页面时使用。过滤器会在每个请求之前检查请求的会话(Session)或者Cookie中是否存在有效的用户信息。如果用户未登录或会话超时,过滤器...
【WPE过登陆器辅助工具】是一款在游戏或者网络应用中常常被使用的工具,主要用于解决登录过程中的某些问题或者提供额外的功能。WPE全称Windows Packet Editor,它是一款网络封包截取和修改的工具,允许用户查看、...
本项目聚焦于“jsp+servlet的登陆注册”功能,涉及了用户登录、注册、页面自动跳转、登录登出计数、IP封禁以及过滤器和监听器的使用,这些都是构建安全、高效Web应用的核心知识点。 1. **登录注册**:这是任何Web...
在IT领域,登陆器通常是用于应用程序或网站的客户端组件,它负责用户的身份验证,确保只有合法的用户可以访问特定资源。本主题涉及的是如何自制登陆器的源码,允许你自定义账号和密码,以实现安全的用户登录功能。 ...
之后,每次请求时,客户端都会携带这个Session ID,服务器根据ID找到对应的Session,判断用户是否已登录。 2. **会话劫持与Session失效**: 为了防止用户在多处登录,需要检测并处理Session的会话劫持。一旦检测到...
3. **外挂作坊4.0.ec**:可能是一个反外挂工具,用于检测和阻止可能导致不公平游戏行为的第三方程序。 4. **取MD5.exe**:这是一个用于计算MD5值的可执行文件,MD5常用于密码存储的安全加密,这里可能是用于验证用户...
4. **安全与反作弊**:生成器在设计时需要考虑如何防止作弊行为,可能采用的技术包括但不限于:验证码系统、IP和MAC地址绑定、数据包检测和过滤等。 5. **部署与更新**:生成器生成的登陆器应具备便捷的部署方式,...
二、检测用户是否登陆的过滤器 在这个例子中,我们实现了一个名为 CheckLoginFilter 的 Filter,该 Filter 的作用是检测用户是否登陆。如果用户未登录,则重定向到指定的登录页面。其实现代码如下: ```java ...
7. **LoginInterceptor**:这是一个拦截器,用于检测用户是否已登录。在用户访问商品详情或创建订单等需要登录的操作时,LoginInterceptor会检查Session中是否存在登录信息。 8. **OAuth 2.0**:OAuth 2.0是一个...
例如,用户首次访问受保护的页面时,`test.jsp`可能负责检测用户是否已登录,如果没有,则重定向到CAS的登录页面。 3. `WEB-INF`:这是Java Web应用的标准目录结构,通常包含应用的类文件、配置文件等。在SSO场景下...
也就是说,我们写用户登陆模块的时候,用户登陆成功之后,要调用Shiro保存登陆凭证。然后查询用户的角色和权限,让Shiro存储起来。将来不管哪个方法需要登陆访问,或者拥有特定的角色跟权限才能访问,我们在方法前...
在Structs2中,拦截器是基于AOP(面向切面编程)理念实现的,它们可以看作是控制器方法执行前后的过滤器。通过定义和配置拦截器,我们可以拦截并处理HTTP请求,决定是否允许请求继续进行,或者返回错误信息、重定向...
- **过滤器查询**:包括单个过滤器和组过滤器的查询,用于定位特定的过滤规则。 - **过滤器动作配置**:定义过滤器在检测到特定事件时应采取的动作,如报警、阻断、重定向等。 - **分类过滤器配置**:基于预定义的...
这对于管理员登录系统来说,可以用于检测用户的活跃状态或者实施安全控制。 其次,Servlet是Java Web应用程序的主要组成部分,它是一个Java类,用于扩展服务器的功能。Servlet接收来自客户端(如浏览器)的请求,并...