struts2拦截器实现用户登录管理
ManagerInterceptor.java
package dsh.bikegis.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import dsh.bikegis.action.ManagerLoginAction;
/**
* 管理員登錄控制的攔截器
* @author NanGuoCan
*
*/
public class ManagerInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 5722672508679011124L;
public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(true);
String username = (String) session.getAttribute("userName");
ActionSupport action = (ActionSupport) invocation.getAction();
if (action instanceof ManagerLoginAction)
return invocation.invoke();
if (username != null && !username.equals(""))
return invocation.invoke();
else {
return "login";
}
}
}
ManagerLoginActionImpl.java
package dsh.bikegis.action.impl;
import com.opensymphony.xwork2.ActionSupport;
import dsh.bikegis.action.ManagerLoginAction;
import dsh.bikegis.model.User;
import dsh.bikegis.service.ManagerLoginService;
import dsh.bikegis.system.SysAction;
public class ManagerLoginActionImpl extends SysAction implements ManagerLoginAction {
/**
* 管理員登錄Action的實現部分
*/
private static final long serialVersionUID = 1L;
private User user;
private ManagerLoginService loginService;
private String errMesg;
/**
* 管理員登錄
*/
@Override
public String login() {
if(!(this.validateLogin()))
return ActionSupport.ERROR;
try {
if (this.loginService.login(user)) {// 登錄成功
request.getSession().setAttribute("userName",
user.getUsername());
request.getSession().setAttribute("id", user.getId());
if (user.getUsername().equals("manager")) {
request.getSession().setAttribute("ROLE", "manager");
}
return SUCCESS;
} else {
this.errMesg = "帳號或密码错误";
return ERROR;
}
} catch (Exception e) {
e.printStackTrace();
this.errMesg = "帳號或密码错误";
return ERROR;
}
}
/**
* 管理员登录 验证
* @return
* 驗證成功返回true,否則返回false
*/
@Override
public boolean validateLogin() {
if (user == null) {
this.errMesg ="未能取得用戶信息";
return false;
}
if (user.getUsername() == null || user.getUsername().equals("")) {
this.errMesg = "帳號不能為空";
return false;
}
if (user.getUserpsw() == null || user.getUserpsw().equals("")) {
this.errMesg = "密碼不能為空";
return false;
}
return true;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public ManagerLoginService getLoginService() {
return loginService;
}
public void setLoginService(ManagerLoginService loginService) {
this.loginService = loginService;
}
public String getErrMesg() {
return errMesg;
}
public void setErrMesg(String errMesg) {
this.errMesg = errMesg;
}
}
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 用戶操作類的Action -->
<package name="adminmanage" namespace="/manage" extends="bikeGIS">
<interceptors>
<!-- 是否登录 -->
<interceptor name="adminLogin"
class="dsh.bikegis.interceptor.ManagerInterceptor"></interceptor>
<interceptor-stack name="adminmanageStack">
<interceptor-ref name="bikeGISstack"></interceptor-ref>
<interceptor-ref name="adminLogin"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="adminmanageStack"></default-interceptor-ref>
<global-results>
<!-- 重新登錄 -->
<result name="login" type="redirectAction">
<param name="actionName">index</param>
<param name="namespace">/manage</param>
</result>
</global-results>
<action name="index" class="loginAction">
<result>/manage/index.jsp</result>
</action>
<!-- 用戶登錄 -->
<action name="loginAction" class="loginAction" method="login">
<result type="redirect">/manage/frame.action</result>
<result name="error">/manage/index.jsp</result>
<result name="input">/manage/index.jsp</result>
</action>
<!-- 用戶退出 -->
<action name="loginOut" class="userAction" method="loginOut">
<result name="success">/manage/index.jsp</result>
</action>
<!-- 修改密碼 -->
<action name="modifyPswAction" class="userAction" method="modifyUserPsw">
<result name="success" type="redirect" >/manage/main.action</result>
<result name="error" >/manage/user/modifypsw.jsp</result>
</action>
</package>
</struts>
分享到:
相关推荐
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...
这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...
本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它通过观察者模式实现,当一个请求到达时,会按照配置的顺序依次执行...
通过上述方式,我们可以利用Struts2的拦截器机制有效地实现页面访问控制和用户注册功能,同时保持代码的清晰和模块化。在实际开发中,还可以结合其他拦截器,如性能监控、日志记录、事务管理等,进一步增强应用的...
在实际项目中,我们通常会结合Spring Security等安全框架,通过拦截器实现更复杂的权限控制。 总结,Struts2拦截器是其核心机制之一,它允许开发者以模块化的方式添加额外的功能,提高代码的可复用性和可维护性。...
3. **权限验证**:拦截器可以实现用户登录检查,防止未授权的访问。 4. **数据校验**:在Action执行前,拦截器可以对输入数据进行校验,确保数据的合法性。 5. **业务逻辑增强**:如事务管理,可以在拦截器中进行...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...
在Struts2框架中,拦截器主要用于对Action执行前后的过程进行干预,以便执行一些通用的功能,如验证用户输入、记录日志、事务管理等。 - **拦截器的核心功能**:Struts2拦截器可以动态地拦截发送到指定Action的请求...
标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...
本话题主要探讨如何利用拦截器实现在用户成功登录后,将其重定向到登录前访问的页面。 首先,理解Struts2的拦截器工作原理。拦截器是基于Java的动态代理机制实现的,它们按照配置的顺序形成一个拦截器链,每个请求...
这个"struts2拦截器应用小例子"可能包含了一个简单的拦截器实现,展示了如何在实际项目中集成和使用。通过这个例子,你可以学习到如何创建、注册拦截器,以及如何在Struts2框架中构建拦截器栈,从而更灵活地管理应用...
在实际开发中,我们可以通过扩展Struts2的拦截器实现自定义功能。例如,你可以创建一个新的拦截器来实现登录检查、权限控制或性能监控,然后将其添加到拦截器栈中。通过理解和研究Struts2的拦截器源码,我们可以更好...
在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它定义了`intercept()`方法,该方法会在Action执行之前和之后被调用,从而实现对请求的拦截和处理。 ### 二、拦截器栈与配置 Struts2中的拦截器不是单独...
通过这种方式,我们可以在不修改Action代码的情况下,利用Struts2拦截器实现国际化策略的动态调整,从而提供更灵活的多语言支持。 总的来说,Struts2拦截器和国际化是两个关键特性,它们分别提供了控制流管理和多...
在Struts2中,拦截器是基于Java的动态AOP(面向切面编程)实现的,它可以在Action调用前后插入额外的逻辑,比如日志记录、权限验证、事务管理等。拦截器通过配置文件或者注解与Action关联,形成一个拦截器栈,每个...
其中,拦截器(Interceptor)是Struts2中的一个关键特性,用于扩展框架的功能,实现诸如事务管理、权限控制、输入验证等功能。 #### Struts2的处理流程 1. **客户端请求**: 当客户端发起HTTP请求时,请求首先到达...
2. **如何实现**:Struts2提供了一个灵活的Interceptor框架,开发者可以通过实现Interceptor接口来自定义拦截器,也可以通过继承已有的拦截器实现来进行扩展。 3. **配置方式**:Interceptor的配置通过Struts2的配置...
实际应用中,你需要创建对应的拦截器实现,并在Action上使用此注解。 3. `@Result`: 此注解用于在Action方法上定义结果,可以直接返回视图名或者结果映射。这样就不用在配置文件中为每个Action单独定义结果。 4. `...