`

过滤未登录的用户

    博客分类:
  • java
阅读更多

package com.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

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 OnlineFilter  implements Filter {
 private static final long serialVersionUID = 1L;
 
 private List notCheckURLList = new ArrayList();

 public void init(FilterConfig filterConfig) throws ServletException {
  String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
   if (notCheckURLListStr != null) {
             StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
             notCheckURLList.clear();
             while (st.hasMoreTokens()) {
                 notCheckURLList.add(st.nextToken());
             }
         }
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  RequestDispatcher dispatcher = request
    .getRequestDispatcher("login_mm.jsp");// 这里设置如果没有登陆将要转发到的页面
  HttpServletRequest req = (HttpServletRequest) request;
  HttpServletResponse res = (HttpServletResponse) response;
  HttpSession session = req.getSession(true);

  // System.out.println(((HttpServletRequest) request).getRequestURI());
  // 从session里取的用户名信息
  String username = (String) session
    .getAttribute("userId");// 这里获取session,为了检查session里有没有保存用户信息,没有的话回转发到登陆页面
  // 判断如果没有取到用户信息,就跳转到登陆页面
    if ((checkRequestURIIntNotFilterList(req))
                 && session.getAttribute("userId") == null) {
     chain.doFilter(request, response);
         }
  if (username == null || "".equals(username)) {
   // 跳转到登陆页面
   response.setCharacterEncoding("GBK");
         PrintWriter out=null;
          try{
     out= response.getWriter();
    } catch(Exception e){e.printStackTrace();}
    out.println("<script>location.href='login_mm.jsp';</script>");
   // System.out.println("用户没有登陆,不允许操作");
   res.setHeader("Cache-Control", "no-store");
   res.setDateHeader("Expires", 0);
   res.setHeader("Pragma", "no-cache");
  } else {
   // 已经登陆,继续此次请求
   chain.doFilter(request, response);
   // System.out.println("用户已经登陆,允许操作");
  }
 }

    public void destroy() {
        notCheckURLList.clear();
    }

    private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
        String uri = request.getServletPath()
                + (request.getPathInfo() == null ? "" : request.getPathInfo());
        boolean url =  notCheckURLList.contains(uri);
        return url;
    }

}

 

--------------------------------web.xml

  <filter> 
    <filter-name>onlineFilter</filter-name> 
    <filter-class>com.filter.OnlineFilter</filter-class> 
     <init-param>
  <param-name>notCheckURLList</param-name>
  <param-value>/login.do</param-value>
  </init-param>
</filter> 
 
<filter-mapping> 
    <filter-name>onlineFilter</filter-name> 
    <url-pattern>*.do</url-pattern> 
</filter-mapping> 

分享到:
评论

相关推荐

    servlet+jsp实现过滤器 防止用户未登录访问

    在本例中,要实现一个简单的登录验证过滤器,可以阻止未登录用户访问除了登录页面以外的其他后台管理页面。通过实现javax.servlet.Filter接口,我们创建了一个LoginFilter类。这个过滤器会在每个请求到达目标页面...

    servlet过滤器验证用户登录

    如果`username`不存在或为空,即用户未登录,则重定向到登录页面;反之,则允许请求继续通过`FilterChain`传递给目标资源。 3. **销毁**:`destroy()`方法用于在Web应用停止或过滤器被卸载时释放资源,本例中未做...

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

    5. **考虑异常处理**:在实现过程中,还要考虑异常处理,如用户未登录但尝试访问受保护资源时的错误提示,以及可能出现的网络问题。 6. **优化与扩展**:可以考虑使用Spring Security等框架,它们提供了更强大、...

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

    // 用户未登录,重定向到登录页面 res.sendRedirect(req.getContextPath() + "/login"); return; } // 如果用户已登录,允许请求继续 chain.doFilter(request, response); } // 实现其他Filter接口方法,...

    play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面

    在Play for Scala框架中,实现SessionFilter的主要目的是为了确保只有已登录的用户才能访问特定的受保护页面,而未登录的用户会被重定向到登录页面。以下是对标题和描述中涉及知识点的详细解释: 1. **Scala编程...

    用户登陆过滤器

    因此,这个过滤器的主要作用是限制未登陆用户的访问,从而保护某些资源的安全。 在实际应用中,这个过滤器可以应用于各种Web应用程序中,以保护用户数据的安全和隐私。 用户登陆过滤器是一个非常重要的安全机制,...

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

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

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

    - 如果 `username` 为空或者等于空字符串,表示用户未登录,重定向到登录页面;否则继续执行链中的下一个过滤器或目标资源。 3. **销毁方法 `destroy`**:当过滤器被卸载时调用,可以在此处清理资源等操作。 #### ...

    带过滤器的登录系统jsp+myeclipse+mysql

    3. **处理**:如果发现用户未登录,过滤器会阻止请求继续,并将响应重定向到登录页面。如果用户已登录,过滤器则允许请求继续到目标资源。 4. **销毁**:在应用关闭或过滤器不再需要时,过滤器会被销毁,释放所占用...

    jsp登录验证(含过滤器)

    - **过滤器拦截**:过滤器检查请求,如果用户未登录,过滤器会阻止请求继续,并重定向到登录页面。 - **用户输入**:用户在登录页面输入凭证(用户名和密码)。 - **验证**:服务器端接收登录信息,验证其正确性...

    .NET MVC授权过滤器验证登录

    // 用户未登录,重定向到登录页面 filterContext.Result = new RedirectResult("/Account/Login"); } } } ``` 然后,我们可以在控制器或特定动作上应用这个自定义的授权过滤器,确保只有登录的用户才能访问: ...

    servlet 过滤器做的简单登陆demo

    如果用户未登录,过滤器将拦截请求并重定向到登录页面。一旦用户成功登录,通常会将用户信息(如用户名或ID)存储在会话(session)中。 3. **Session和Cookie**: - **Session**:在Java Web中,session用于在...

    jsp+servlet登录验证过滤器

    在这个场景下,登录验证过滤器会检查每个请求,如果用户未登录,则重定向他们到登录页面,或者如果已经登录,允许请求继续。 5. **过滤器链(Filter Chain)**:多个过滤器可以串联起来形成过滤器链,按照定义的...

    过滤器进行登录操作

    例如,将所有与管理员相关的请求路径映射到登录过滤器,防止未授权访问。 5. **异常处理**:在过滤器中捕获登录相关的异常,如用户名或密码错误,可以统一处理这些异常,提供友好的错误提示,而不是暴露系统的具体...

    包含过滤器的一个简单登陆实例

    在我们的登录实例中,过滤器会拦截所有请求,检查用户是否已经登录,未登录的用户将被重定向到登录页面。 实现过滤器的步骤通常包括以下几步: 1. **创建过滤器类**:首先,我们需要创建一个实现`Filter`接口的类...

    通过过滤器管理用户权限(1)

    例如,我们可以指定只有已登录用户才能访问`/admin/*`这样的路径: ```xml &lt;filter-name&gt;LoginFilter &lt;filter-class&gt;com.example.filter.LoginFilter&lt;/filter-class&gt; &lt;filter-name&gt;LoginFilter ...

    Jsp中使用过滤器实现用户权限限制功能

    如果你的过滤器设置正确,未登录用户将会被重定向到登录页面。你可以使用工具如Eclipse(`.classpath`和`.project`文件表明这是一个Eclipse项目)来调试和测试过滤器。 5. **扩展与优化**: 这只是一个基础的权限...

    mvc模式过滤器简单登录

    1. **权限验证**:对每个请求进行过滤,检查用户是否已登录,如果未登录则重定向到登录页面。 2. **安全过滤**:过滤非法字符,防止SQL注入攻击,确保输入的数据安全。 3. **日志记录**:记录用户的登录尝试,便于...

    idea+maven+springmvc 登录过滤器

    我们可以通过配置Spring Security的XML配置文件,指定哪些URL需要过滤,以及未登录时的行为。 5. **请求拦截器**:除了过滤器,Spring MVC还提供了`HandlerInterceptor`接口,用于实现更高级别的请求拦截。你可以...

Global site tag (gtag.js) - Google Analytics