`

登录过滤器

阅读更多

一个简单的登录过滤器

 

public class LoginFilter
        implements Filter
{
    public static final String LOGIN_URI_CONF = "login_uri";
    public static final String LOGIN_FORWARD_URI_CONF = "login_forward_uri";
    public static final String MUST_IN_SESSION_CONF = "must_in_session";
    public static final String NEED_NOT_LOGIN_URIS_CONF = "need_not_login_uris";


    public String loginUri;
    public String forwardLoginUri;
    public String mustInSession;
    public List<String> needNotLoginUris;

    public void init(FilterConfig filterConfig)
            throws ServletException
    {
        loginUri = filterConfig.getInitParameter(LOGIN_URI_CONF);
        forwardLoginUri = filterConfig.getInitParameter(LOGIN_FORWARD_URI_CONF);
        mustInSession = filterConfig.getInitParameter(MUST_IN_SESSION_CONF);


        needNotLoginUris = new ArrayList<String>();
        String needNotLoginUrisStr = filterConfig.getInitParameter(NEED_NOT_LOGIN_URIS_CONF);
        if (needNotLoginUrisStr != null && needNotLoginUrisStr.trim().length() != 0) {
            needNotLoginUrisStr = needNotLoginUrisStr.replaceAll(System.getProperty("line.separator"),
                    "");// Replace all line breaks
            String[] uriArray = needNotLoginUrisStr.split(",");
            for (String uri : uriArray) {
                needNotLoginUris.add(uri.trim());
            }
        }
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
            throws IOException, ServletException
    {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

      //  System.out.println(">>>>>Request URI= " + httpRequest.getRequestURI());

        //如果是请求登录,或者是登录前页面,或者是请求其他不需要登录页面,则通过
        //如果是请求资源文件如.css,.jpg等,也通过
        String reqURI = httpRequest.getRequestURI();
        if (reqURI.indexOf(loginUri) != -1 ||
                reqURI.indexOf(forwardLoginUri) != -1 ||
                containsInList(needNotLoginUris, httpRequest.getRequestURI()) ||
                reqURI.indexOf(".action") == -1) {
            filterChain.doFilter(request, response);
        }
        else {
            //如不存在对应本请求的session也不创建
            HttpSession session = httpRequest.getSession(false);

            if (session == null || session.getAttribute(mustInSession) == null) {
                //未登录,但请求需要登录的URI,则转向登录页面
                httpResponse.sendRedirect(forwardLoginUri);
            }
            else {
                filterChain.doFilter(request, response);
            }
        }
    }

    public void destroy()
    {
    }

    private boolean containsInList(List<String> uris, String uri)
    {
        for (String u : uris) {
            if (uri.indexOf(u) != -1) {
                return true;
            }
        }
        return false;
    }
}

 

web.xml配置如下

  <filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.ceno.mcps.portal.action.LoginFilter</filter-class>
    <init-param>
      <param-name>login_uri</param-name>
      <param-value>/portal-www/loginWww.action</param-value>
    </init-param>
    <init-param>
      <param-name>login_forward_uri</param-name>
      <param-value>/portal-www/preView.action</param-value>
    </init-param>
    <init-param>
      <param-name>need_not_login_uris</param-name>
      <param-value>
        /portal-www/listCategoryByServiceType.action,
        /portal-www/listAllContent.action,
      </param-value>
    </init-param>
    <init-param>
      <param-name>must_in_session</param-name>
      <param-value>userId</param-value>
    </init-param>
  </filter>

 

 

 

分享到:
评论

相关推荐

    idea+maven+springmvc 登录过滤器

    在IT行业中,构建一个安全的Web应用程序是至关重要的,而登录过滤器和请求拦截器是实现这一目标的关键组件。本文将详细讲解如何使用IntelliJ IDEA(Idea)、Maven和Spring MVC框架来创建一个登录过滤器,以及如何将...

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

    具体来说,一个登录过滤器可能包含以下步骤: 1. **初始化**:在过滤器生命周期开始时,过滤器会加载配置信息,如需要拦截的URL模式。 2. **过滤**:当用户请求某个资源时,过滤器首先被调用。在这里,它检查请求...

    ssm框架的登录过滤器

    在SSM框架中,登录过滤器扮演着至关重要的角色。它负责拦截用户的HTTP请求,检查用户是否已经登录,只有当用户通过正确的身份验证后,才会允许他们访问特定的受保护页面。这样可以确保系统安全,防止未经授权的访问...

    登陆过滤器登陆过滤器登陆过滤器

    登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器

    Servlet过滤器的简单使用源码+文档

    通过这个简单的登录示例,你可以学习到如何利用Servlet过滤器检查用户登录状态,确保只有已登录的用户才能访问特定的受保护资源。过滤器提供了一种灵活的方式来增强应用程序的功能,无需修改原有的Servlet代码,对于...

    简单的JSP登入过滤器类写法

    【JSP 登录过滤器详解】 在Web开发中,为了保护特定资源,通常需要实现登录过滤器,确保只有已登录的用户才能访问某些页面。在Java Web应用中,我们可以使用Servlet API中的`Filter`接口来实现这个功能。下面将详细...

    过滤器进行登录操作

    4. **URL映射**:通过配置过滤器的`&lt;url-pattern&gt;`,我们可以指定哪些URL需要经过登录过滤器。例如,将所有与管理员相关的请求路径映射到登录过滤器,防止未授权访问。 5. **异常处理**:在过滤器中捕获登录相关的...

    Springboot入门培训 9 登录过滤器 Security 初始化例子.zip

    在本教程中,我们将深入探讨如何使用Spring Boot和Spring Security构建一个登录过滤器的初始化示例。Spring Boot简化了Spring应用程序的开发,而Spring Security则提供了强大的安全框架,用于保护我们的Web应用程序...

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

    在这个场景中,我们将探讨如何利用授权过滤器来验证用户的登录状态。 首先,了解.NET MVC过滤器的基本概念。过滤器在.NET MVC中扮演着拦截器的角色,可以应用于控制器或特定的动作,执行预处理和后处理任务。主要有...

    mvc模式过滤器简单注册登录

    1. **注册登录过滤器**:在本项目中,过滤器可能被用来实现用户注册和登录的功能。例如,当用户尝试访问受保护的资源时,过滤器会检查其是否已经登录,如果没有,会重定向到登录页面。 2. **登录验证**:过滤器可以...

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

    本实例“包含过滤器的一个简单登录实例”将引导我们了解如何在实际项目中运用过滤器进行用户验证,确保只有合法用户才能访问受保护的资源。 过滤器在Java Web开发中被广泛应用,它们是Servlet规范的一部分,定义在`...

    过滤器的使用,内有源码的说明

    - `登陆的过滤器.txt`文件可能是关于登录过滤器的详细代码示例,展示如何检查session中的登录状态并处理未登录的请求。 - `字符编码的过滤器.txt`文件则可能讲解如何编写字符编码过滤器,解决乱码问题的代码实例。 ...

    Java中过滤器的使用

    比如,我们可以创建一个登录过滤器,检查请求是否已登录,未登录则重定向到登录页面。 5. **Spring MVC中的Filter**:在Spring MVC框架中,虽然Controller承担了大部分业务逻辑,但仍然可以使用Filter,甚至可以...

    jsp过滤器的使用(含一个project实例说明)

    项目名为`filter`,我们创建一个简单的登录过滤器,确保用户在访问受保护的JSP页面前已登录。首先,创建过滤器类`LoginFilter`: ```java import javax.servlet.*; import java.io.IOException; public class ...

    过滤器-登录

    登录过滤器通常用于检查用户是否已经登录,如果没有,则重定向到登录页面。 在描述中提到的链接指向了一篇博客,虽然具体内容没有给出,但可以推测它可能详细介绍了如何创建和配置一个登录过滤器,可能包括了Java...

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

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

    在使用实现过滤器进行request包装,获取内层request的分析

    例如,如果希望所有请求都通过登录过滤器,可以这样配置: ```xml &lt;filter-name&gt;LoginFilter &lt;filter-class&gt;com.example.filter.LoginFilter&lt;/filter-class&gt; &lt;filter-name&gt;LoginFilter &lt;url-pattern&gt;/* ``...

    servlet 过滤器做的简单登陆demo

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

    servlet过滤器验证用户登录

    在IT领域,特别是Java Web开发中,Servlet过滤器(Filter)是实现用户权限管理、登录状态验证等关键功能的重要机制之一。本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的...

    jsp+servlet登录验证过滤器

    在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...

Global site tag (gtag.js) - Google Analytics