`
huttoncs
  • 浏览: 200879 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2登陆拦截器

阅读更多
1、拦截器代码如下:

package ssh.security;

import java.util.Map;

import model.login.LoginVo;

import org.apache.log4j.Logger;

import ssh.web.action.LoginPerson;
import ssh.web.action.login.LoginAction;
import ssh.web.action.logout.LogoutAction;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

@SuppressWarnings("serial")
public class LoginInterceptor implements Interceptor {

    public static final String LOGIN_PAGE = "login";

    //public static Student student;
    public static LoginVo loginVo;
   
    /**
* 初始化日志引擎
*/
private final Logger logger = Logger.getLogger("s2shLogger");

public void destroy() {

}

public void init() {

}

@SuppressWarnings("unchecked")
public String intercept(ActionInvocation actionInvocation) throws Exception {

        Object action = actionInvocation.getAction();
       
        logger.info(LoginInterceptor.class + "拦截到的action为:"+action);
        // 对LoginAction不做该项拦截 LoginPerson
        if (action instanceof LoginPerson || action instanceof LoginAction) {
            System.out.println("exit check login, because this is login action.");
            return actionInvocation.invoke();
        }
        if(action instanceof LogoutAction){
        System.out.println("exit check logout, because this is logout action.");
        return actionInvocation.invoke();
        }
       
        // 确认Session中是否存在Student
        Map session = actionInvocation.getInvocationContext().getSession();
        if(session !=null){
        loginVo = (LoginVo) session.get("seStudent");
            if (loginVo != null ) {
                // 存在的情况下进行后续操作。
                System.out.println("already login!"+action.toString());
                return actionInvocation.invoke();
            } else {
                // 否则终止后续操作,返回LOGIN
                System.out.println("no login, forward login page!");
                ActionContext.getContext().put("info", "请先登录系统后再进行操作");
                return LOGIN_PAGE;
            }
        }else {
            // 否则终止后续操作,返回LOGIN
            System.out.println("no login, forward login page!");
            ActionContext.getContext().put("info", "请先登录系统后再进行操作");
            logger.warn("非法账号登录");
            return LOGIN_PAGE;
        }
       
}

}


2.struts配置文件中,有关拦截器的配置内容如下:
<?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>
<constant name="struts.devMode" value="true" />
<constant name="struts.objectFactory" value="spring"></constant>
<constant name="struts.i18n.encoding" value="utf-8"/>
    <include file="/actions/struts_student.xml"></include>
    <include file="/actions/struts_login.xml"></include>
    <include file="/actions/struts_page.xml"></include>
    <include file="/actions/struts_ajax.xml"></include>
   
    <package name="struts-comm" extends="struts-default">
    <!-- 拦截器配置 -->
    <interceptors>
<interceptor name="loginInterceptor" class="ssh.security.LoginInterceptor"></interceptor>

<interceptor-stack name="teamwareStack">
            <interceptor-ref name="loginInterceptor"/>
            <interceptor-ref name="defaultStack"/>
        </interceptor-stack>
</interceptors>
   
<default-interceptor-ref name="teamwareStack"/>

<global-results>
   <result name="login">/main/webapp/pub/index.jsp</result>
   </global-results>
   
    </package>
</struts>

3.接受登录请求的Action设置session信息的代码片段:
package ssh.web.action.login;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import model.login.LoginVo;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;

import ssh.comm.util.Tools;
import ssh.service.login.LoginFacade;
import ssh.web.action.LoginPerson;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class LoginAction extends ActionSupport { 
private String account;
private String password;
private String verifyCode;

private LoginFacade loginFacade;
private LoginVo loginVo;

private final Logger logger = Logger.getLogger(LoginPerson.class);
@SuppressWarnings("deprecation")
@Override
public String execute() throws Exception {

logger.info(LoginAction.class + "[method:login() 登录账号验证] in ...");

HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
/**
* 验证码校验
* */
String icp = (String) session.getAttribute("piccode");
if (icp==null && !Tools.isEmpty(verifyCode)){
icp = verifyCode;
}
if(Tools.isEmpty(verifyCode)|| !icp.equalsIgnoreCase(verifyCode)){
request.setAttribute("errMessage","验证码错误,请重新输入");
return LOGIN;
}
if (!Tools.isEmpty(icp) && !Tools.isEmpty(verifyCode)) {
if (!verifyCode.equalsIgnoreCase(icp)) {
request.setAttribute("errMessage","验证码错误,请重新输入");
return LOGIN;
}
}

/**
* 获取当前登录对象
* 用于判断系统是否已登录
* */
loginVo = this.loginFacade.login(account, password);

if(loginVo != null ){
session.setAttribute("seStudent", loginVo);
return SUCCESS;
}else{
request.setAttribute("err", "用户名或密码错误,请重新输入后登陆");
return LOGIN;
}

}

public String getAccount() {
return account;
}

public void setAccount(String account) {
this.account = account;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getVerifyCode() {
return verifyCode;
}

public void setVerifyCode(String verifyCode) {
this.verifyCode = verifyCode;
}

public LoginFacade getLoginFacade() {
return loginFacade;
}

public void setLoginFacade(LoginFacade loginFacade) {
this.loginFacade = loginFacade;
}

public LoginVo getLoginVo() {
return loginVo;
}

public void setLoginVo(LoginVo loginVo) {
this.loginVo = loginVo;
}



}


0
0
分享到:
评论

相关推荐

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

    在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...

    Struts2 配置登陆拦截器

    在Struts2中,拦截器是实现业务逻辑控制和处理流程的重要组件,它们可以添加额外的功能,如日志记录、权限检查、事务管理等,而不干扰实际的业务操作。本篇文章将详细介绍如何配置Struts2的登录拦截器,以及其背后的...

    Struts拦截器案例——登陆

    总结起来,这个"Struts拦截器案例——登陆"涵盖了Struts2拦截器的基本使用、登录验证、数据库操作以及异常处理等多个方面。通过学习这个案例,开发者可以更好地理解和掌握Struts2框架中的拦截器机制,从而在实际项目...

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

    2. 注册拦截器:在Struts2的配置文件(如struts.xml)中,将这个拦截器添加到默认栈或者自定义拦截器栈中。 3. 检查登录状态:在`intercept()`方法中,可以通过Session或者其他方式检查用户是否已登录,未登录则返回...

    struts2实现的简单登陆 附加拦截器防止重复提交

    在这个"struts2实现的简单登陆 附加拦截器防止重复提交"的项目中,我们将深入探讨Struts2如何处理用户登录以及如何通过拦截器来防止重复提交的问题。 首先,我们来理解一下Struts2的核心概念。Struts2框架基于...

    struts2上传文件及拦截器

    struts2上传单个文件及多个文件,strus2拦截器的使用,里面有个user用户,先执行user.jsp即登陆,可以执行上传文件的操作,反之,不能,有个exit.jsp,退出之后不能执行。里面含有jar文件,导入myeclipse可以执行...

    使用Struts2的拦截器实现权限控制

    Struts2 框架是Java Web开发中的一个强大MVC框架,它的核心特性之一是拦截器(Interceptor),它允许开发者在Action执行前后插入自定义的处理逻辑,从而实现诸如日志、权限控制、事务管理等多种功能。在这个场景中,...

    struts2 登陆注册 以及验证

    在Struts2中,我们还可以利用拦截器(Interceptor)增强功能,如登录拦截器可以检查用户是否已经登录,未登录时重定向到登录页面。日志拦截器可以记录请求信息,帮助调试和监控。 文件"hello_struts2"可能包含了...

    struts2 登陆注册

    3. **拦截器**:Struts2的拦截器可以进行全局性的操作,比如登录检查、权限验证等。在登录注册中,我们可能会用到`Params`拦截器来处理表单参数,`Validation`拦截器来进行数据验证。 4. **结果类型(Result)**:...

    struts2登陆例子

    3. **拦截器(Interceptors)**:Struts2的核心特性之一是拦截器,它们可以插入到Action调用链中,执行额外的任务,如日志记录、权限检查等。在登录场景中,可能有一个验证用户凭据的拦截器。 4. **结果(Results)...

    struts2登陆案例

    Struts2框架通过拦截器处理请求,拦截器链可以实现诸如参数绑定、类型转换、异常处理等功能。在登录案例中,Struts2会自动将表单数据绑定到Action类的属性上,无需手动获取请求参数。 总结一下,Struts2登录案例...

    tab标签页和struts2登陆.rar

    此外,Struts2支持拦截器(Interceptor),这些拦截器可以插入到Action执行流程中,提供额外的功能,如登录检查。你可以创建一个自定义拦截器,确保只有已登录的用户才能访问特定的Action。在Struts2配置文件中,将...

    struts2登陆验证

    4. **拦截器(Interceptor)**:Struts2的拦截器可以用来增强Action执行前后的功能,比如登录验证。可以创建自定义的拦截器来检查Session中是否有已登录的用户,或者直接在Action中进行验证。 5. **数据验证**:在...

    Struts拦截器实现拦截未登陆用户实例解析

    Struts拦截器实现拦截未登陆用户实例解析 Struts拦截器是Struts2框架中的一个重要组件,它可以在Action执行之前或之后进行拦截,实现一些公共的逻辑操作。今天,我们将讲解如何使用Struts拦截器来实现拦截未登陆...

    struts拦截器防止未登陆访问内部系统

    本文深入探讨如何利用Struts2的拦截器特性实现有效的登录验证,包括超时后的跳转处理。 #### 一、拦截器的概念 拦截器(Interceptor)是Struts2框架中的关键组件之一,用于在执行Action之前或之后进行一系列的...

    struts2简单的登陆验证

    4. **拦截器(Interceptor)**:Struts2的拦截器机制允许在Action执行前后插入自定义逻辑,如登陆验证。通常,一个名为`validation`的拦截器会检查Action的输入是否有效,而`login`拦截器则处理实际的登陆验证。 5....

    Struts2登陆页面项目.zip_java_myeclipse_struts2

    此外,Struts2使用配置文件(如struts.xml)来管理Action、结果和拦截器,使得整个应用的结构清晰可维护。 在MyEclipse中,开发者通常会创建一个Struts2项目,包含src目录、WebContent目录等。源代码通常分布在src...

    struts2登陆代码

    2. **配置文件**:Struts2的配置文件(通常是`struts.xml`或`struts-default.xml`)定义了Action类和Action方法之间的映射关系,以及拦截器的配置。在登录场景下,我们需要配置`LoginAction`及其相关操作的结果。 `...

    Struts2登陆简例

    4. **拦截器(Interceptor)**:Struts2的拦截器机制允许在Action执行前后插入额外的处理逻辑。在登录场景中,可以使用`params`拦截器来处理表单参数,`validation`拦截器进行表单验证,以及可能的`login`自定义拦截...

    简单的struts 2的登陆界面

    5. **Interceptor(拦截器)**:Struts 2的拦截器机制允许我们在Action执行前后添加自定义逻辑,如验证、日志等。对于登录,我们可以使用预定义的`params`拦截器来处理表单参数,以及自定义的`validation`拦截器进行...

Global site tag (gtag.js) - Google Analytics