用户登录过滤器
来源:互联网 发布:淘宝客返利api 编辑:程序博客网 时间:2024/06/04 19:58
开发web项目,一般必须先登录成功才能进入主页,但在浏览器里直接输入主页地址,同样可以直接进入,毫无安全性可言,所以需要登录过滤器来过滤未登录用户到登录页面
package com.*.util.filter;import java.io.IOException;import java.util.HashSet;import java.util.Map;import java.util.Set;import java.util.regex.Pattern;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.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.*.common.model.User;import com.*.util.config.ProperConfigUtil;public class LoginFilter extends HttpServlet implements Filter {private static final long serialVersionUID = 1L;/** * 排除的表达式 */@SuppressWarnings("serial")private static final Set<Pattern> excludeSet = new HashSet<Pattern>() {{// 用户模块部分// add(Pattern.compile("/user_.+\\.do"));add(Pattern.compile("/login.do"));add(Pattern.compile("/user.do"));}};@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;String sessionId = httpRequest.getParameter("JSESSIONID");//boolean blen = httpRequest.isRequestedSessionIdFromURL();HttpSession session = httpRequest.getSession();sessionId = session.getId();@SuppressWarnings("unchecked")Map<String, HttpSession> sessions = (Map<String, HttpSession>) httpRequest.getSession().getServletContext().getAttribute("sessions");String webroot = ProperConfigUtil.getConfigByKey("webroot");if(webroot == null){webroot = session.getServletContext().getRealPath("");ProperConfigUtil.setConfig("webroot", webroot);}User user = null;if (sessionId != null && !"".equals(sessionId)) {if (sessions.containsKey(sessionId)) {user = (User) sessions.get(sessionId).getAttribute("USER");} else {httpResponse.sendRedirect(httpRequest.getContextPath()+ "/login.do?method=goLogin");return;}} if(user == null) {user = (User) session.getAttribute("USER");}String code = httpRequest.getMethod();String url = httpRequest.getRequestURI();if (code == null) {httpResponse.sendRedirect(httpRequest.getContextPath()+ "/login.do?method=goLogin");return;}for (Pattern excludePattern : excludeSet) {if (excludePattern.matcher(url).find()) {chain.doFilter(request, response);return;}}if (user == null || "".equals(user.getUserName())) {// 判断获取的路径不为空且不是访问登录页面或执行登录操作时跳转if (url != null && !url.equals("") && code.indexOf("Login") < 0&& code.indexOf("login") < 0) {httpResponse.sendRedirect(httpRequest.getContextPath()+ "/login.do?method=goLogin");return;}}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void destroy() {}}
0 0
- 用户登录过滤器
- 用户登录过滤器
- 用户登录过滤器
- 用户登录过滤器
- 用户登录的过滤器
- 用户登录过滤器
- 用户是否登录验证--过滤器
- 过滤器检验用户是否登录
- 过滤器检验用户是否登录
- 过滤器检验用户是否登录
- 过滤器检验用户是否登录
- 用户登录全站过滤器
- 用户登录(login)过滤器(Filter)
- 过滤器实现单一用户登录
- 创建用户登录的过滤器
- JSP中filter过滤器验证用户登录
- 使用Servlet过滤器实现用户登录验证
- 使用Servlet过滤器实现用户登录验证
- hadoop学习笔记-生产环境hadoop集群安装
- Qt头文件中的QT_BEGIN_NAMESPACE
- android 滑动欢迎界面
- Windows远程桌面(mstsc)通过RDP协议访问Ubuntu
- kmalloc分配内核堆空间
- 用户登录过滤器
- ajax处理全过程总结
- UITableView 滚动流程性优化
- Qt: No such file or directory
- ios 图片拉伸
- 2013年中国手机打车应用市场研究报告
- android驱动之旅-下载编译Linux Kernel 源代码 for Android 以及android源码(2)
- 浏览器中关于事件的那点事儿
- c++中构造函数