您的位置:首页 > 编程语言 > ASP

ASP.NET中实现用户不可重复登录

2008-06-03 21:27 477 查看
功能描述:A用户使用AID登录 ,B用户在A用户未退出的情况下也使用AID登录 这时A用户被取消权限

在Global.asax中添加以下代码:

[align=left]void Application_AcquireRequestState(object sender, EventArgs e)[/align]
[align=left] {[/align]
[align=left] if (Request["MyCookies"] != null && Session["ID"] != null)[/align]
[align=left] {[/align]
[align=left] HttpCookie cookie = Request.Cookies["MyCookies"];[/align]
[align=left] if (cookie[Session["ID"].ToString()] != null)[/align]
[align=left] { [/align]
[align=left] if (Application[Session["ID"].ToString()].ToString() != cookie[Session["ID"].ToString()].ToString())[/align]
[align=left] {[/align]
[align=left] TimeSpan ts = new TimeSpan(-1, 0, 0, 0);[/align]
[align=left] cookie.Expires = DateTime.Now.Add(ts); [/align]
[align=left] Response.AppendCookie(cookie);[/align]
[align=left] Session["ID"] = null;[/align]
[align=left] Request.Cookies.Remove("MyCookies"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
}

在需要权限验证的页面(等入窗口)

[align=left] protected void Button1_Click(object sender, EventArgs e)[/align]
[align=left]{ [/align]
[align=left]if (Request.Cookies["MyCookies"] != null)[/align]
[align=left] {[/align]
[align=left] if (Session["ID"] != null)[/align]
[align=left] {[/align]
[align=left] if (Session["ID"].ToString() != this.TextBox1.Text)[/align]
[align=left] {[/align]
[align=left] Res_Cookie();[/align]
[align=left] }[/align]
[align=left] else [/align]
[align=left] {[/align]
[align=left] Response.Write("登录成功!");[/align]
[align=left] }[/align]
[align=left] } [/align]
[align=left] }[/align]
[align=left] else [/align]
[align=left] {[/align]
[align=left] Res_Cookie();[/align]
}
}

[align=left]private void Res_Cookie() [/align]
[align=left] {[/align]
[align=left] string this_time = DateTime.Now.ToString();[/align]
[align=left] Application[this.TextBox1.Text] = this_time;[/align]
[align=left] HttpCookie cookie = new HttpCookie("MyCookies");[/align]
[align=left] TimeSpan ts = new TimeSpan(0, 0, 1, 0);[/align]
[align=left] cookie.Values.Add(this.TextBox1.Text, this_time);[/align]
[align=left] Session["ID"] = this.TextBox1.Text;[/align]
[align=left] Response.AppendCookie(cookie);[/align]
[align=left] Response.Write("登录成功!");[/align]
[align=left] }[/align]

在添加个测试按钮:

[align=left]protected void Button2_Click(object sender, EventArgs e)[/align]
[align=left] {[/align]
[align=left]if (Request.Cookies["MyCookies"] == null)[/align]
[align=left] {[/align]
[align=left] Response.Write("登录失败!");[/align]
[align=left] }[/align]
[align=left] else [/align]
[align=left] {[/align]
[align=left] Response.Write("登录成功!");[/align]
[align=left] }[/align]
}

最后在session_end事件中对Application中的数据进行释放
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: