您的位置:首页 > 其它

引用借以记录借鉴 实现记住密码和自动登录功能

2014-01-23 15:23 405 查看
WEB页面代码:

<form id="Form1" runat="server">
<input type="hidden" id="hidPass" runat="server" />
<input type="text" runat="server" id="txtLoginName" />
<asp:TextBox runat="server" ID="txtPassWord" class="textwidthheigh" TextMode="Password"></asp:TextBox>
<input type="checkbox" runat="server" value="记住密码" id="chkRemember" onclick="CheckRemember()" />
<input type="checkbox" runat="server" value="自动登录" id="chkLogin" onclick="CheckLogin()" />
<asp:Button runat="server"  id="btnLogin"  onclick="btnLogin_Click"  />
<input type="button" id="btnClear" onclick="Clear()"  />
</form>
<script type="text/javascript" language="javascript">
//页面加载用户名输入框获得焦点
document.getElementById("txtLoginName").focus();
function Clear() {
//用户点击取消,清空用户名和用户密码
document.getElementById("txtLoginName").value = "";
document.getElementById("txtPassWord").value = "";
}
function CheckLogin() {
//用户勾选自动登录时,把记住密码也勾选上
var remember = document.getElementById("chkRemember");
remember.checked = true;
}
function CheckRemember() {
var remenber = document.getElementById("chkRemember");
var login = document.getElementById("chkLogin");
if (remenber.checked == false) {
login.checked = false;
//用户去掉记住密码时,也把自动登录去掉
}
}

</script>


后台代码:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//获取客户端的Cookies,分别两个cookies,一个登陆名,一个密码
HttpCookie LoginNameCookie = Request.Cookies["Bic_LoginName"];
HttpCookie LoginPassCookie = Request.Cookies["Bic_Pass"];
if (LoginNameCookie != null)
{
//登录名的cookies不为空,填充登陆名
txtLoginName.Value = LoginNameCookie.Value;
}
if (LoginPassCookie != null)
{
//密码cookies不为空,给密码框和隐藏密码框填充,当然我们的密码是加密过才存到cookies去的,至于以藏文本框的作用后面就会看到
this.txtPassWord.Attributes.Add("value", LoginPassCookie.Value + "");
hidPass.Value = LoginPassCookie.Value + "";//赋值给隐藏控件
chkRemember.Checked = true;
}
//获取是否有勾选自动登录的cookies
HttpCookie Login = Request.Cookies["Bic_LoginAuto"];
//当用户在系统点击退出时
if (Request["opFlag"] == "Exit")
{
this.txtPassWord.Attributes.Add("value", "");//把密码去掉
chkRemember.Checked = false;//记住密码去掉
HttpCookie loginNameCookie = Request.Cookies["Bic_LoginName"];//获取登录名cookies
HttpCookie loginPassCookie = Request.Cookies["Bic_Pass"];//获取密码cookies
if (loginNameCookie != null)
{
//把cookies时间设为-2相当于删掉了cookies
loginNameCookie.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Set(loginNameCookie);
}
if (loginPassCookie != null)
{
//把密码的cookies也删掉
loginPassCookie.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Set(loginPassCookie);
}
//自动登录cookies也一样
HttpCookie login = Request.Cookies["Bic_LoginAuto"];
if (login != null)
{
login.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Set(login);
}
}
else//用户打开登录界面时
{
//自动登录cookies不为空,用户名不为空,隐藏框密码不为空
if (Login != null && txtLoginName.Value != "" && hidPass.Value != "")
{
SysUser user = new SysUser();
user.Login_Name = txtLoginName.Value;
user.Login_Pass = hidPass.Value;
int i = SysUserBLL.Login(user);//验证登录
if (i > 0)
{
//成功登录跳转到default.aspx页面
Page.Session["Login_Name"] = user.Login_Name;
HttpContext.Current.Session["Display_Name"] = SysUserBLL.getDisplayNameByname(user.Login_Name);
Response.Write("<script>window.location='Default.aspx';</script>");
Response.End();
}
}
}
}
}
//点击登录按钮事件
protected void btnLogin_Click(object sender, EventArgs e)
{
//判断是否为空
if (txtLoginName.Value.Trim() != "" && txtPassWord.Text.Trim() != "")
{
SysUser user = new SysUser();
user.Login_Name = txtLoginName.Value.Trim();
user.Login_Pass = CommonHelper.MD5encipher(txtPassWord.Text.Trim());//MD5加密
HttpCookie LoginNameCookie = Request.Cookies["Bic_LoginName"];
HttpCookie LoginPassCookie = Request.Cookies["Bic_Pass"];
if (LoginNameCookie != null)//如果是记住密码情况
{
if (txtLoginName.Value.Trim() == LoginNameCookie.Value.Trim())//读取到cookies保存的用户名和文本框用户名相同,预防用户又改动
{
if (LoginPassCookie != null)
{
if (txtPassWord.Text.Trim() == LoginPassCookie.Value.Trim())//cookies读取到的密码和文本框密码相同
{
user.Login_Pass = txtPassWord.Text.Trim();
}

}
}
}
int i = SysUserBLL.Login(user);//验证登录
if (i > 0)
{
if (chkRemember.Checked == true)//记住密码
{
HttpCookie loginNameCookie = new HttpCookie("Bic_LoginName", user.Login_Name);
HttpCookie loginPassCookie = new HttpCookie("Bic_Pass", user.Login_Pass);
loginPassCookie.Expires = DateTime.Now.AddDays(1);
loginNameCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(loginNameCookie);
Response.Cookies.Add(loginPassCookie);
if (chkLogin.Checked == true)//自动登录
{
HttpCookie Login = new HttpCookie("Bic_LoginAuto", "true");
Login.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(Login);
}
else
{
HttpCookie Login = Request.Cookies["Bic_LoginAuto"];
if (Login != null)
{
Login.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Set(Login);
}
}
}
else//没选记住密码
{
HttpCookie loginNameCookie = Request.Cookies["Bic_LoginName"];
HttpCookie loginPassCookie = Request.Cookies["Bic_Pass"];
if (loginNameCookie != null)
{
loginNameCookie.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Set(loginNameCookie);
}
if (loginPassCookie != null)
{
loginPassCookie.Expires = DateTime.Now.AddDays(-2);
Response.Cookies.Set(loginPassCookie);
}
}
Page.Session["Login_Name"] = user.Login_Name;
HttpContext.Current.Session["Display_Name"] = SysUserBLL.getDisplayNameByname(user.Login_Name);
Response.Write("<script>window.location='Default.aspx';</script>");
}
else
{
Response.Write("<script>alert('用户名或密码错误!');window.location='Login.aspx';</script>");
}
}
else
{
Response.Write("<script>alert('请输入账号和密码!');window.location='Login.aspx';</script>");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: