`

自动登录

 
阅读更多
package com.zuwoba.presentation.action.account;

import java.util.Map;

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

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.ActionContext;
import com.zuwoba.model.User;
import com.zuwoba.model.UserSession;
import com.zuwoba.presentation.action.base.BaseAction;
import com.zuwoba.util.EmailLoginAddress;
import com.zuwoba.util.MD5_Encoding;

/**
 * @project_name zuwoba
 * @file_name LoginAction.java
 * @author tianhandigeng
 * @version Oct 25, 2010 2:53:04 PM
 * @declaration
 */
public class LoginAction extends BaseAction implements ServletRequestAware,ServletResponseAware{
	private String email_username;
	private String password;
	private String captcha;
	private String autologin;

	private HttpServletRequest request;
	private HttpServletResponse response;
	
	
	// 提示窗口
	private String hint;
	private String tip;

	public String getTip() {
		return tip;
	}

	public void setTip(String tip) {
		this.tip = tip;
	}

	public String getPassword() {
		return password;
	}

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

	public String getAutologin() {
		return autologin;
	}

	public void setAutologin(String autologin) {
		this.autologin = autologin;
	}

	public String getEmail_username() {
		return email_username;
	}

	public void setEmail_username(String email_username) {
		this.email_username = email_username;
	}

	public String getHint() {
		return hint;
	}

	public void setHint(String hint) {
		this.hint = hint;
	}

	public String getCaptcha() {
		return captcha;
	}

	public void setCaptcha(String captcha) {
		this.captcha = captcha;
	}

	public void setServletRequest(HttpServletRequest servletRequest) {
        this.request=servletRequest;		
	}

	public void setServletResponse(HttpServletResponse servletResponse) {
		this.response=servletResponse;
	}
	
	@SuppressWarnings("unchecked")
	public String execute() {
////		HttpServletResponse response = (HttpServletResponse) ActionContext
////				.getContext().get(StrutsStatics.HTTP_RESPONSE);
////		HttpServletRequest request = (HttpServletRequest) ActionContext
////				.getContext().get(StrutsStatics.HTTP_REQUEST);
////		HttpSession session = request.getSession();
//		HttpServletResponse response=(HttpServletResponse)ServletActionContext.getResponse();
//		HttpServletRequest request=(HttpServletRequest)ServletActionContext.getRequest();
		HttpSession session=request.getSession();
		
		
		//获得域名
//		String host=request.getServerName();
		String host="ceshi";

		email_username = this.getEmail_username().trim();
		password = this.getPassword().trim();
		captcha = this.getCaptcha().trim().toLowerCase();
		autologin = this.getAutologin();

		// 密码加密
		MD5_Encoding md5 = new MD5_Encoding();
		password = md5.getMD5ofStr(password);

		if (!captcha.equals(session.getAttribute("idcode"))) {
			this.setTip("验证码错误");
			this.setHint("failed");
			return INPUT;
		} else {
			// Email登录
			User user1 = userService.findUserByEmailPassword(email_username,
					password);

			if (user1 != null) {
				if ("N".equals(user1.getEnable())) {// 邮件登陆但没有激活
					String emailAddress = EmailLoginAddress
							.getEmialLoginAddress(email_username);

					session.setAttribute("email", email_username);
					session.setAttribute("secret", user1.getSecret());
					session.setAttribute("tempname", user1.getUsername());
					session.setAttribute("emailAddress", emailAddress);

					return "unverified";
				} else {
					// 处理自动登录
					if (autologin != null) {
						// 创建两个cookie对象
						// 一个cookie记录用户名,另一个记录唯一的验证码
						// 并将此验证码写入数据库,以备用户返回时查询(防止伪造cookie)
						Cookie cookie1 = new Cookie("SESSION_LOGIN_USERNAME", user1
								 .getUsername());
						cookie1.setMaxAge(60 * 60 * 24 * 14);// 设置cookie有效期为2周
						cookie1.setPath("/");
						cookie1.setDomain(host);
						response.addCookie(cookie1);

						String sessionid = session.getId();
						Cookie cookie2 = new Cookie("SESSION_ID", sessionid);
						cookie2.setMaxAge(60 * 60 * 24 * 14);
						cookie2.setPath("/");
						cookie2.setDomain(host);
						response.addCookie(cookie2);

						// 在数据库中插入相应记录
						UserSession userSession = new UserSession();
						userSession.setUsername(user1.getUsername());
						userSession.setSessionid(sessionid);
						userService.addUserSession(userSession);
					}
					session.setAttribute("user", user1);
					return SUCCESS;
				}
			} else {
				// 用户名登陆
				User user2 = userService.findUserByUserNamePassword(
						email_username, password);
				if (user2 != null) {
					if ("N".equals(user2.getEnable())) {// 用户名登陆但没有激活
						String emailAddress = EmailLoginAddress
								.getEmialLoginAddress(email_username);

						session.setAttribute("email", email_username);
						session.setAttribute("secret", user2.getSecret());
						session.setAttribute("tempname", user2.getUsername());
						session.setAttribute("emailAddress", emailAddress);

						return "unverified";
					} else {

						// 处理自动登录
						if (autologin != null) {
							// 创建两个cookie对象
							// 一个cookie记录用户名,另一个记录唯一的验证码
							// 并将此验证码写入数据库,以备用户返回时查询(防止伪造cookie)
							Cookie cookie1 = new Cookie("SESSION_LOGIN_USERNAME", user2
									 .getUsername());
							cookie1.setMaxAge(60*60*24*14);// 设置cookie有效期为2周
							cookie1.setPath("/");
							cookie1.setDomain(host);
							response.addCookie(cookie1);

							String sessionid = session.getId();
							Cookie cookie2 = new Cookie("SESSION_ID", sessionid);
							cookie2.setMaxAge(60 * 60 * 24 * 14);
							cookie2.setPath("/");
							cookie2.setDomain(host);
							response.addCookie(cookie2);

							// 在数据库中插入相应记录
							UserSession userSession = new UserSession();
							userSession.setUsername(user2.getUsername());
							userSession.setSessionid(sessionid);
							userService.addUserSession(userSession);
						}
						session.setAttribute("user", user2);
						return SUCCESS;
					}
				} else {
					this.setHint("failed");
					this.setTip("不存在这样的Email或用户名或密码错误");
					return INPUT;
				}
			}
		}
	}
}
分享到:
评论

相关推荐

    热血江湖自动登陆易语言源代码

    通过对源代码的阅读和分析,可以了解易语言的语法结构,以及如何利用它实现网络通信和自动登录功能。同时,也可以借此理解游戏登录的基本流程和安全机制,对提升编程技能和了解游戏行业有一定的帮助。

    SAP 自动登录程序.exe

    4. **系统配置**: 实现SAP自动登录需要在SAP客户端和服务器端进行适当的配置,确保SAP GUI Scripting功能已启用,并且网络环境允许自动登录的执行。 5. **多系统和客户端管理**: 如果文件名为"系统1-客户端100",这...

    C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

    本文将详细介绍如何使用C#中的`HttpWebRequest`来发送POST请求,并实现网站的自动登录。 #### 发送POST请求的基本步骤 1. **创建HttpRequest对象**:首先需要创建一个`HttpWebRequest`对象,并设置其URL地址。 2. ...

    易语言设置系统用户自动登陆

    在IT领域,尤其是在系统管理和自动化操作中,"易语言设置系统用户自动登录"是一个常见的需求。易语言,作为中国本土的编程语言,以其简洁的语法和面向初学者的设计,为开发者提供了实现这一功能的可能。这里我们将...

    开机自动登录软件 也能在自动登陆后锁定电脑

    【开机自动登录软件及其功能详解】 在日常使用电脑时,我们常常希望能够在开机后自动登录到系统,以节省时间并提高工作效率。优达 开机自动登录 1.4.8 正是这样一款软件,它专门设计用于实现这一功能。这款软件能够...

    XP系统自动登录器帮助用户自动登陆

    《XP系统自动登录器:实现高效便捷的系统登陆》 XP系统自动登录器是一款专为Windows XP操作系统设计的实用工具,旨在简化用户的登陆流程,让用户能够实现系统登陆的完全自动化。这款程序小巧轻便,仅有8.65KB,却能...

    简单的chrome插件,实现自动登录.

    本案例中,我们关注的是一个简单的Chrome插件,它的功能是实现自动登录。这个插件对于经常需要访问多个网站并记住用户名和密码的用户来说非常有用,它可以节省时间并提高效率。 首先,我们需要理解Chrome插件的基本...

    QQ自动登陆器(C#源码下载)

    QQ自动登陆器是一款基于C#编程语言开发的软件,它允许用户实现QQ账号的自动登录功能,节省了手动输入账号密码的时间,对于需要频繁登录QQ的用户来说非常方便。通过研究这款源码,开发者可以深入理解C#语言在网络编程...

    Radmin自动登陆器 v3.0 20150615

    为了安全高效地使用Radmin Viewer来自动登录和管理多台服务器,故编制RadminM (Radmin Connection Manager,Radmin自动登录器)。 v3.0版的可执行文件是RadminM.exe,一台电脑只能运行一个实例,再次运行只是将已运行...

    qq自动登录代码

    QQ作为中国最流行的即时通讯工具之一,其自动登录功能对于开发者和用户都有较高的实用价值。这篇文档将深入探讨如何使用VBScript(Visual Basic Script)实现QQ的一键自动登录和批量登录。 首先,我们需要理解...

    Win2k/XP系统自动登陆器

    4. **取消自动登录**:如果不再需要自动登录功能,可以通过再次修改注册表,将"AutoAdminLogon"键值设回0,同时清除或删除"DefaultUserName"和"DefaultPassword"值。也可以通过自动登陆器软件提供的相应选项来恢复到...

    qq自动登陆工具 一起登陆很多QQ

    从标签“qq自动登陆”我们可以推断,这个工具的核心功能是自动登录QQ账号,可能包含了一些安全机制来保护用户的登录信息,如加密存储等。同时,由于它可以同时处理多个QQ账号,所以也可能具备多账户管理的特性。 在...

    Fodera自动登陆脚本

    这样设置后,系统在启动时会读取该脚本并执行,从而实现自动登录功能。这个过程通常涉及到系统级别的配置,可能需要管理员权限来操作。 标签中的“Fodera”再次确认了这个脚本与Fodera系统相关,“自动登陆”表明其...

    window自动登录脚本

    实现windows用户自动登录,喜欢自动化的可以尝试

    xp系统自动登录器

    "XP系统自动登录器"是一个针对Windows XP设计的工具,旨在帮助用户实现系统启动时的自动登录功能,从而省去了每次开机后手动输入密码的步骤。这对于家庭用户或者在特定应用场景下的商业用户来说非常方便,比如在无人...

    中国移动手机自动登陆注册源码

    至于压缩包内的“自动登陆”文件,这很可能是实现自动登录功能的核心代码文件。这个文件可能包含了登录逻辑、请求处理、身份验证以及与服务器通信的相关函数或类。开发者可以在这个基础上进行修改,以适应不同的服务...

    通达OA自动登陆代码(JDK6版)

    使用JDK6意味着这个自动登录代码兼容该版本的API和特性。 通达OA,全称是通达信协同办公系统,是中国市场上较为流行的企事业单位信息化管理软件之一。它提供了包括任务管理、文档管理、工作流、邮件等在内的多种...

    使用批处理实现telnet自动登陆并执行ping命令

    本文将深入探讨如何使用批处理(BAT)脚本来实现通过telnet进行自动登录并执行ping命令,以此来远程检测网络连通性。这在监控服务器、网络故障排查或自动化测试场景下尤为常见。 首先,让我们理解一下涉及的三个...

    fedora13 root自动登陆

    ### Fedora13 Root 用户自动登录配置详解 #### 标题:Fedora13 root自动登陆 此标题指出了本文的主要目的:在 Fedora 13 操作系统中设置 root 用户为默认自动登录账户。 #### 描述:Fedora13 使用 root 用户自动...

Global site tag (gtag.js) - Google Analytics