`

struts2过滤器验证登陆状态

阅读更多

 

实现效果为:

用户在没登陆的情况下就不能访问管理页面,访问后会跳回登陆页面


  1. web.xml里,配置一个过滤器

 

<filter>  
    <filter-name>RightFilter</filter-name>  
    <filter-class>com.***.rights.RightFilter</filter-class>  
</filter>  
<filter-mapping>  
    <filter-name>RightFilter</filter-name>  
    <url-pattern>*.jsp</url-pattern>  
</filter-mapping>  
<filter-mapping>  
    <filter-name>RightFilter</filter-name>  
    <url-pattern>*.action</url-pattern>  
</filter-mapping>
 

 

 

 

  1. 在处理登陆的action中,登陆成功后,往session中写入一个值,作为是否登陆的标记,这里写入用户名username:

 HttpServletRequest request = ServletActionContext.getRequest();

request.getSession().setAttribute("username", username);

 

 

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;  
  
public class RightFilter extends HttpServlet implements Filter {  
  
    public void doFilter(ServletRequest arg0, ServletResponse arg1,  
            FilterChain arg2) throws IOException, ServletException {  
        HttpServletResponse response = (HttpServletResponse) arg1;    
        HttpServletRequest request=(HttpServletRequest)arg0;  
        HttpSession session = request.getSession(true);    
        String usercode = (String) session.getAttribute("usercode");//  
        String url=request.getRequestURI();  
        if(usercode==null || usercode.equals(""))  
        {  
            //判断获取的路径不为空且不是访问登录页面或执行登录操作时跳转  
            if(url!=null && !url.equals("") && ( url.indexOf("Login")<0 && url.indexOf("login")<0 ))  
            {  
                response.sendRedirect("登录路径");  
                return ;  
            }             
        }  
            //已通过验证,用户访问继续  
            arg2.doFilter(arg0, arg1);  
            return;  
    }  
  
    public void init(FilterConfig arg0) throws ServletException {  
        // TODO Auto-generated method stub  
  
    }  
 
  1. 编辑相应的过滤器类LoginFilter,过滤器检查session中username的值是否为空,为空则跳转至登陆页面:

 

这样就可以了,除了login页面外全部都会被过滤器检测。

注:

浏览器关闭后session将被销毁,用户需重新登陆。

退出操作则将session中的username值设置为null即可。

分享到:
评论

相关推荐

    Struts权限过滤器

    在`web.xml`中添加自定义过滤器的配置,确保它在Struts过滤器之前执行,以便先进行权限检查: ```xml &lt;filter-name&gt;customAuthenticationFilter &lt;filter-class&gt;...

    struts2用cookie实现自动登录中用过滤器执行读取上下文方法

    综上所述,Struts2使用Cookie实现自动登录的核心在于创建和解析Cookie,以及配置过滤器来读取Cookie并恢复上下文。这个过程中涉及到了Web安全、用户认证、过滤器机制等知识点,对于开发安全、高效的Web应用非常重要...

    使用struts2拦截器对登陆权限验证

    在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...

    Struts2编写的通用(拦截器,过滤器)Filter

    在本项目中,过滤器可能与拦截器协同工作,同样负责验证用户登录状态。通常,过滤器通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法来实现。过滤器可以全局应用,对所有请求或特定URL模式生效。 **非法...

    struts2工作原理及拦截器和过滤器

    Struts2 工作原理及拦截器和过滤器 Struts2 框架的工作原理可以分为以下几个步骤: 1. 客户端发出一个指向 Servlet 容器的请求(Tomcat); 2. 这个请求会经过几个过滤器,最后会到达 FilterDispatcher 过滤器。...

    结合struts2编写的通用过滤器filter

    本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性和功能性。 过滤器(Filter)在Java Servlet规范中定义,是基于请求/响应模型工作的。它们通过实现`javax.servlet.Filter`接口,并重写...

    struts2过滤器和拦截器的区别分析

    - 过滤器主要用于预处理请求或后处理响应,例如验证用户登录状态、设置字符编码、过滤敏感词汇等。过滤器通常是对请求和响应进行统一处理,不涉及业务逻辑。 2. **拦截器**: - 拦截器则更加灵活,它不仅可以实现...

    struts2连接数据库实现用户登录.pdf

    文档中展示了Struts2的过滤器StrutsPrepareAndExecuteFilter的配置,该过滤器负责拦截请求并将其分发到Struts2框架进行处理。过滤器的配置确保了所有请求都会被Struts2框架处理。 3. Action类的编写 LoginAction类...

    Struts2视频教程

    - **拦截器**:拦截器是Struts2的一个重要特性,可以在请求到达Action之前或之后执行特定的操作,如验证用户登录状态、日志记录等。 #### 四、Struts2进阶技巧 - **ModelDriven模式**:该模式允许Action实例共享同...

    Struts2登录注册

    在“Struts2登录注册”项目中,我们可以探讨以下几个关键知识点: 1. **Action类**:Struts2的核心是Action类,它是业务逻辑的载体。每个Action对应一个特定的用户操作,例如登录或注册。开发者需要创建一个Action...

    struts2 trim拦截器 过滤首尾空格

    Struts2 Trim拦截器过滤首尾空格 Struts2框架提供了拦截器机制,可以在Action执行前后执行某些操作,以满足特定的需求。TrimInterceptor就是一个这样的拦截器,它的主要功能是过滤请求数据的首尾空格。 ...

    struts2 学习重点笔记

    在 web.xml 中配置 Struts2 的过滤器 FilterDispatcher。 **3.2 数据接收** - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类...

    struts过滤器

    Struts过滤器是Java Web开发中Struts框架的一部分,它主要负责在请求到达Action之前进行预处理,并在响应返回给客户端之前进行后处理。过滤器是Servlet规范的一部分,定义在`javax.servlet.Filter`接口中,它允许...

    struts2 拦截器 小小的登录控制

    拦截器在Struts2中扮演着类似过滤器的角色,但更加强大和灵活。它们通过定义一系列预定义的或自定义的拦截器栈来处理请求,可以用于日志记录、权限验证、事务管理等多种用途。在这个登录控制的小Demo中,我们可能会...

    Struts2资源

    2. **过滤器处理**:请求首先会经过一系列过滤器,如ActionContextCleanUp过滤器,用于清理Action上下文环境,这对于集成其他框架(如SiteMeshPlugin)非常重要。 3. **ActionMapper解析**:FilterDispatcher调用...

    Struts2 Request Process Procedure

    请求首先到达的是Struts2的过滤器Dispatcher,它通常是web应用部署描述符(web.xml)中的一个Filter。过滤器Dispatcher负责拦截所有请求,检查是否属于Struts2的请求。 3. **ActionContext初始化**: 在请求被...

    JavaWeb中Struts2拦截器深入分析(一)

    - 过滤器是Servlet规范的一部分,主要用于对HTTP请求和响应进行预处理和后处理,比如字符编码转换、登录检查等。而拦截器则是Struts2框架内部机制,专注于业务逻辑层面的扩展。 - 过滤器按照定义的过滤器链顺序...

    Struts2工作流程

    2. **过滤器链**:请求首先经过一系列过滤器,包括`ActionContextCleanUp`,它清理线程上下文,然后可能有其他自定义过滤器,如`SiteMesh`用于页面布局,最后到达`FilterDispatcher`。 3. **FilterDispatcher**:...

    JAVAEE +struts2

    在这个场景下,过滤器可能用于登录状态的检查,未登录用户尝试访问受保护页面时会被重定向到登录页面。 4. **国际化(Internationalization, i18n)**:国际化允许应用为不同地区的用户提供本地化的用户体验。通过...

Global site tag (gtag.js) - Google Analytics