`
段海波
  • 浏览: 318316 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2拦截器实现用户登录管理

    博客分类:
  • j2ee
阅读更多

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>
 
分享到:
评论
1 楼 di1984HIT 2015-09-10  
学习了,嘿嘿。。

相关推荐

    Struts2拦截器实现权限控制demo

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

    struts2 拦截器实现登录控制

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

    struts2拦截器实现权限控制

    这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...

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

    本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它通过观察者模式实现,当一个请求到达时,会按照配置的顺序依次执行...

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

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

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

    在实际项目中,我们通常会结合Spring Security等安全框架,通过拦截器实现更复杂的权限控制。 总结,Struts2拦截器是其核心机制之一,它允许开发者以模块化的方式添加额外的功能,提高代码的可复用性和可维护性。...

    struts2 拦截器

    3. **权限验证**:拦截器可以实现用户登录检查,防止未授权的访问。 4. **数据校验**:在Action执行前,拦截器可以对输入数据进行校验,确保数据的合法性。 5. **业务逻辑增强**:如事务管理,可以在拦截器中进行...

    struts2 拦截器实例

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...

    详解Struts2拦截器

    在Struts2框架中,拦截器主要用于对Action执行前后的过程进行干预,以便执行一些通用的功能,如验证用户输入、记录日志、事务管理等。 - **拦截器的核心功能**:Struts2拦截器可以动态地拦截发送到指定Action的请求...

    struts2拦截器

    标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...

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

    本话题主要探讨如何利用拦截器实现在用户成功登录后,将其重定向到登录前访问的页面。 首先,理解Struts2的拦截器工作原理。拦截器是基于Java的动态代理机制实现的,它们按照配置的顺序形成一个拦截器链,每个请求...

    struts2拦截器应用小例子

    这个"struts2拦截器应用小例子"可能包含了一个简单的拦截器实现,展示了如何在实际项目中集成和使用。通过这个例子,你可以学习到如何创建、注册拦截器,以及如何在Struts2框架中构建拦截器栈,从而更灵活地管理应用...

    Struts2拦截器源码

    在实际开发中,我们可以通过扩展Struts2的拦截器实现自定义功能。例如,你可以创建一个新的拦截器来实现登录检查、权限控制或性能监控,然后将其添加到拦截器栈中。通过理解和研究Struts2的拦截器源码,我们可以更好...

    Struts2拦截器原理分析

    在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它定义了`intercept()`方法,该方法会在Action执行之前和之后被调用,从而实现对请求的拦截和处理。 ### 二、拦截器栈与配置 Struts2中的拦截器不是单独...

    struts2拦截器国际化

    通过这种方式,我们可以在不修改Action代码的情况下,利用Struts2拦截器实现国际化策略的动态调整,从而提供更灵活的多语言支持。 总的来说,Struts2拦截器和国际化是两个关键特性,它们分别提供了控制流管理和多...

    Struts2学习案例(拦截器)

    在Struts2中,拦截器是基于Java的动态AOP(面向切面编程)实现的,它可以在Action调用前后插入额外的逻辑,比如日志记录、权限验证、事务管理等。拦截器通过配置文件或者注解与Action关联,形成一个拦截器栈,每个...

    Java Struts 实现拦截器

    其中,拦截器(Interceptor)是Struts2中的一个关键特性,用于扩展框架的功能,实现诸如事务管理、权限控制、输入验证等功能。 #### Struts2的处理流程 1. **客户端请求**: 当客户端发起HTTP请求时,请求首先到达...

    struts2 Interceptor拦截器

    2. **如何实现**:Struts2提供了一个灵活的Interceptor框架,开发者可以通过实现Interceptor接口来自定义拦截器,也可以通过继承已有的拦截器实现来进行扩展。 3. **配置方式**:Interceptor的配置通过Struts2的配置...

    Struts2 拦截器注解(二十七)

    实际应用中,你需要创建对应的拦截器实现,并在Action上使用此注解。 3. `@Result`: 此注解用于在Action方法上定义结果,可以直接返回视图名或者结果映射。这样就不用在配置文件中为每个Action单独定义结果。 4. `...

Global site tag (gtag.js) - Google Analytics