`
huangronaldo
  • 浏览: 222647 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

简单的struts2拦截器利用session拦截用户登录

阅读更多

本人在实习项目时,在网上找到一个简单的拦截用户登录,总结一下:希望高手指点,继续进步和完善。

首先编写拦截类LoginedCheckInterceptor.java 如下:package com.huangt.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.huangt.bean.SystemUser;
/* session过期、登录有效性及操作的权限验证拦截器 */
@SuppressWarnings("serial")
public class LoginedCheckInterceptor extends AbstractInterceptor {
    /** 拦截请求并进行登录有效性验证 */
    public String intercept(ActionInvocation ai) throws Exception {
        //取得请求的URL
        String url = ServletActionContext.getRequest().getRequestURL().toString();
        HttpServletResponse response=ServletActionContext.getResponse();
        response.setHeader("Pragma","No-cache");          
        response.setHeader("Cache-Control","no-cache");   
        response.setHeader("Cache-Control", "no-store");   
        response.setDateHeader("Expires",0);
        SystemUser systemUser = null;
        //对登录与注销请求直接放行,不予拦截
        if (url.indexOf("login.action")!=-1 || url.indexOf("logout.action")!=-1){
            return ai.invoke();
        }
        else{
            //验证Session是否过期
            if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){
                //session过期,转向session过期提示页,最终跳转至登录页面
                return "tologin";
            }
            else{
                systemUser = (SystemUser)ServletActionContext.getRequest().getSession().getAttribute("systemUser");
                //验证是否已经登录
                if (systemUser==null){
                    //尚未登录,跳转至登录页面
                    return "tologin";
                }else{                    
                    return ai.invoke();
                                
                }                
            }            
        }
    }
}

 

然后用户登陆成功后,设置session的值。在LoginAction中登陆成功后加入一行:

 

ActionContext.getContext().getSession().put("systemUser",systemUser);
 

 

<!--EndFragment--> <!---->

最为重要的便是struts.xml文件了,本人配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>
	
	<package name="struts2" extends="struts-default">
		
		 <!-- 配置自定义拦截器LoginedCheckInterceptor -->
        <interceptors>
            <interceptor name="loginedCheck" class="com.zjsoft.interceptor.LoginedCheckInterceptor"/>
            <interceptor-stack name="mystack">
                <interceptor-ref name="loginedCheck" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>        
    
        <!-- 定义全局result -->
        <global-results>
            <!-- 定义名为exception的全局result -->
            <result name="exception">/exception.jsp</result>
            <result name="tologin" type="redirect">/unlogind.jsp</result>
        </global-results>
        <!-- 定义全局异常映射 -->
        <global-exception-mappings>
            <!-- 捕捉到Exception异常(所有异常)时跳转到exception所命名的视图上 -->
            <exception-mapping exception="java.lang.Exception" result="exception"/>
        </global-exception-mappings>    

<!-- 用户登录 -->
		<action name="login" class="loginAction" >           
            <result name="input" >/login.jsp</result> 
            <result name="error" >/login.jsp</result> 
            <result name="success" type="redirect">/index.jsp</result>
        </action>
        <action name="logout" class="com.zjsoft.action.LogoutAction" >           
            <result name="success" type="redirect">/login.jsp</result>
        </action>
<!-- 系统用户信息管理 -->
		<action name="listSystemUser" class="systemUserAction" method="listSystemUser">
			<result name="success">/listSystemUser.jsp</result>
			<interceptor-ref name="mystack" />
		</action>

	</package>
</struts>

 在每个需要拦截登录的action中加入<interceptor-ref name="mystack" /> 便可。

 

 

分享到:
评论

相关推荐

    简单的struts2拦截器利用session拦截用户登录.docx

    在Struts2框架中,拦截器(Interceptor)是实现业务逻辑和控制流程分离的重要工具,它允许开发者在执行Action之前或之后执行某些操作,比如验证用户登录状态。在这个案例中,我们讨论的是如何使用拦截器来检查用户的...

    利用struts2拦截器做的简单登录

    本文将深入探讨如何利用Struts2的拦截器实现简单的登录功能。拦截器是Struts2框架的核心组件之一,它允许我们在动作执行前后插入自定义逻辑,比如权限验证、日志记录等。 首先,我们来理解一下Struts2拦截器的工作...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    struts2 拦截器实现登录控制

    这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...

    运用struts2技术的拦截器实现的页面检测和用户注册

    通过上述方式,我们可以利用Struts2的拦截器机制有效地实现页面访问控制和用户注册功能,同时保持代码的清晰和模块化。在实际开发中,还可以结合其他拦截器,如性能监控、日志记录、事务管理等,进一步增强应用的...

    Struts通过拦截器实现登录后跳转到登录前页面

    通过这样的设置,Struts2的拦截器就能够帮助我们在用户登录成功后,将其重定向回他们最初尝试访问的页面,提供更好的用户体验。同时,这种方法也使得代码更易于维护,因为登录逻辑与具体业务Action分离,遵循了单一...

    创建自己struts2拦截器

    Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。在Struts2中,拦截器是AOP(面向切面编程)的一种实现,它可以监控、修改或增强方法调用的...

    struts2 用拦截器 实现用户权限登录

    2. **配置拦截器**:然后,在Struts2的配置文件(通常为`struts.xml`或`struts-default.xml`)中注册这个拦截器。 ```xml &lt;!-- 其他拦截器配置 --&gt; &lt;default-interceptor-ref name="defaultStack"/&gt; &lt;!-- 引入...

    struts2拦截器和验证框架(适合初学者-经藏版)

    Struts2的核心是拦截器(Interceptor),它不仅可以用来处理用户请求,还可以进行各种预处理工作,如验证用户输入、转换数据类型等。 #### 二、拦截器基础 拦截器在Struts2中扮演着非常重要的角色,它们可以拦截...

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    登录验证是Web应用中常见的安全需求,Struts2通过拦截器可以实现对用户登录状态的有效控制。 在Struts2中,拦截器可以分为手动验证和自动验证两种方式。手动验证通常由开发者编写代码来检查用户是否已登录,如果未...

    struts2拦截器实现用户登录权限的验证

    下面我们将详细介绍如何利用Struts2的拦截器来实现用户登录权限的验证。 #### 概念理解 - **拦截器(Interceptor)**:在Struts2框架中,拦截器是一种可以被用来执行预处理和后处理操作的对象。它们可以在Action执行...

    Struts2拦截器实例.docx

    本文档将详细介绍如何在Struts2框架中创建一个登录验证拦截器,以确保除了登录请求外,所有其他请求都会被拦截,并检查用户的登录状态。 #### 登录校验拦截器的工作原理 登录校验拦截器的主要作用是检查用户是否...

    基于ssh拦截器框架Struts2拦截器的登录验证实现

    总的来说,通过 Struts2 的拦截器机制,我们可以实现高效且可复用的登录验证功能,有效地控制用户访问权限,提高系统的安全性。同时,通过合理的配置和页面设计,可以确保用户体验的流畅性。这种基于拦截器的登录...

    struts2.0拦截器、crud例子与用法

    本文将详细解析Struts2中的拦截器(Interceptor)、CRUD操作以及Action的执行流程。 首先,让我们聚焦于Struts2的拦截器机制。拦截器是Struts2的核心组件,它们在Action执行前后运行,提供了AOP(面向切面编程)的...

    Struts拦截器案例——登陆

    在这个"Struts拦截器案例——登陆"中,我们将深入探讨如何利用Struts拦截器实现用户登录功能。 首先,拦截器在Struts2框架中是一种插件机制,它允许我们在动作调用前后插入自定义的逻辑,而无需修改原有的业务代码...

    struts2拦截器

    在提供的压缩包`struts2_helloWorld`中,可能包含了一个简单的Struts2项目,展示了如何集成自定义拦截器到Struts2应用中。你可以通过解压文件,运行项目,观察在用户验证失败时如何跳转到“unauthorized”结果页面,...

    struts2实现拦截器、

    本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...

    Struts2拦截器的简单登录应用.zip_jsp_lonelyi7a

    在这个“Struts2拦截器的简单登录应用”中,我们将深入理解如何利用拦截器实现用户登录验证。 首先,Struts2的拦截器机制是基于责任链模式的,它可以看作是在Action调用前后执行的一系列预定义或自定义操作。这些...

    Struts2拦截器及其用法详细说明

    Struts2 拦截器是Struts2框架的核心组件之一,它们允许开发者在Action执行前后插入自定义逻辑,实现跨切面的功能。拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨...

    struts2拦截器使用(用户session失效后的统一页面指向).docx

    在这个文档中,我们关注的是Struts2的拦截器(Interceptor)的使用,特别是如何在用户Session失效后将其重定向到一个统一的页面。拦截器是Struts2框架的核心组件之一,它在Action执行前后执行特定的逻辑,提供了扩展...

Global site tag (gtag.js) - Google Analytics