ASP.NET 限制用户重复登录
来源:互联网 发布:西安软件新城 编辑:程序博客网 时间:2024/05/19 23:15
实现方式,用户登录的时候记录用Session他的ID和登录时间。然后写入一个XML文件。以他的用户名命名,内容写入他的登录时间。登录后每个页面每20秒用Session的登录时间去比对写入的文件。如果正确则不用理会 如果不正确则被被踢出。因为写入的文件如果不是同一用户名登录的话是不会更新的。
代码可以实现 用户单一登录 单点登录 无限人次登录 。稍微修改就可以实现了。
login 页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:TextBox ID="txtUser" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" On
</div>
</div>
</form>
</body>
</html>
login 代码
using System;
using System.Da
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string strUserId = txtUser.Text;
string times = DateTime.Now.ToString("yyyyMMddHHmmss");
string body = CourseXMLFileHeader + "<userTime>" + times + "</userTime></NewDataSet>";
string CourseFilePath =Server.MapPath(".") + "file://userlist//" + strUserId + ".XML";
if (!System.IO.File.Exists(CourseFilePath))
{
System.IO.FileStream NewText = System.IO.File.Create(CourseFilePath);
NewText.Close();
Session["SESSION_USERTIME"] = times;
Session["SESSION_USERName"] = strUserId;
}
else
{
System.IO.File.Delete(CourseFilePath);
System.IO.FileStream NewText = System.IO.File.Create(CourseFilePath);
NewText.Close();
Session["SESSION_USERTIME"] = times;
Session["SESSION_USERName"] = strUserId;
}
System.IO.StreamWriter sw = new System.IO.StreamWriter(CourseFilePath, true);
body = body.Replace("\'", "\"");
sw.WriteLine(body);
sw.Close();
Response.Redirect("Default.aspx");
}
public String CourseXMLFileHeader = @"<?xml version='1.0' standalone='yes'?><NewDataSet>";
}
default 页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="DataList1" runat="server">
</asp:GridView>
</form>
</body>
</html>
<script type="text/javas
var x=0;
function myRefresh()
{
xRequest();
var result = "";
xmlHttp.open("Post", "test.aspx", false);
xmlHttp.send("");
result = xmlHttp.responseText;
if(result!="ok")
{
alert("sorry,您的账号在别处登录");
location.href='logost.aspx';
}
x++;
if(x<20)
{
setTimeout("myRefresh()",20*1000);
}
}
myRefresh();
var xmlHttp;
function xRequest(){
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest(); //火狐浏览器。
}
else if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE浏览器。
if(!xmlHttp){xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}
}
}
</script>
代码
using System;
using System.Da
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DirectoryInfo di = new DirectoryInfo(Server.MapPath(".") + "file://userlist//");
FileSystemInfo[] dis = di.GetFileSystemInfos();
if (dis.Length < 1)
{
Response.Write("<script>alert(\"目录是空的\");</script>");
}
else
{
foreach (FileSystemInfo fitemp in dis)
{
Response.Write(fitemp.Name + "<br>");
}
}
}
}
Test.aspx 这个页面是用来检查是否被顶 只要写代码就可以了
using System;
using System.Da
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string times = Session["SESSION_USERTIME"].ToString();
string userid= Session["SESSION_USERName"].ToString();
string CourseFilePath = Server.MapPath(".") + "file://userlist//" + userid + ".XML";
if (times.Equals(ReadXmlReturnNode(CourseFilePath, "userTime")))
{
this.Response.Write("ok");
this.Response.End();
}
else
{
this.Response.Write("no");
this.Response.End();
}
}
public static string ReadXmlReturnNode(string XmlPath, string Node)
{
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
XmlNodeList xn = docXml.GetElementsByTagName(Node);
return xn.Item(0).InnerText.ToString();
}
}
退出界面 logost .aspx
using System;
using System.Da
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class logost : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session.Remove("SESSION_USERTIME");
Session.Remove("SESSION_USERName");
Response.Redirect("login.aspx");
}
}
- ASP.NET 限制用户重复登录
- 限制用户重复登录
- asp.net限制用户登录错误次数
- ASP.NET用户重复登录控制
- asp.net判断用户是否重复登录
- ASP.NET实现禁止用户重复登录
- VB.net 临时表实现限制用户重复登录
- Spring 限制用户重复登录
- asp.net限制Session用户的重复登陆
- Asp.net防止论坛用户重复登录的方法
- ASP.NET中实现用户不可重复登录
- ASP.NET中实现用户不可重复登录
- asp.net 中关于防止用户重复登录的问题
- asp.net 防止用户重复多次登录实例代码详解
- asp.net防止用户多次重复登录的方法
- ASP.NET防用户重复登录的方法
- ASP.Net 防止重复登录
- ASP.NET的用户登录
- Objective-C 函数 “值传递” 和 “引用传递” 和 C
- 剑指offer:最小的k个数
- 外媒解读中国打造空天一体军队:将更具攻击性
- ArcGIS.Server.9.3和ArcGIS API for JavaScript实现距离量算和面积量算(九)
- 精容数安企业级备份软件(Rongan Backup)
- ASP.NET 限制用户重复登录
- openwrt相关
- 【jQuery学习笔记------jQuery原型技术分解】
- 梦之帆留学官网
- mysql对GIS的支持 & oracle 空间数据库说明
- 黑马程序员_java集合
- 日媒:中国科学号船让日头痛 无法驱逐只能监视
- ArcGIS.Server.9.3和ArcGIS API for JavaScript保存自定义图形(十)
- 【ci框架】ci框架mysql数据库连接资源无法释放