我正在开发一个网站,用户需要登录系统才能使用它。当前的功能是:
当用户输入用户名和密码时,数据库会检查该用户是否存在以及是否输入了正确的密码。
然后才允许该用户登录。
到目前为止一切都很好,现在客户端想要向日志记录功能添加一项功能,即客户端想要限制该用户仅存在 1 个会话。
IE。如果 user1 从 PC 的一个浏览器登录,那么他应该
不允许从其他系统或同一系统的其他浏览器登录
个人电脑。
我怎么做?我计划使用数据库中的一个位字段来完成此操作,该位字段将在用户第一次登录时设置。如果他尝试第二次登录,请检查该字段,并仅在未设置位字段时才允许登录。
但我觉得这会引起问题
1)如果用户错误地关闭了浏览器的选项卡并尝试再次登录,他将无法这样做,因为位字段仍将设置在数据库中
2)如果用户误关闭浏览器,设置的字段什么时候会被清除?
如果有任何其他方法来实现它,那么您可以随意为我指出正确的方向。
正如一些其他成员指出的那样,这个问题有重复,但这些问题并不是我真正想要的,因为they are using form based authentication and I am not
.
提供有关我的评论的更多详细信息:
Step 1
创建一个Sessions
包含以下字段的表:
SessionId ( Primary Key ) char(24)
UserId ( Foreign Key to Users table ) int
LoginDate datetime
Step 2
创建您的Session
class.
public class Session {
public string Sessionid { get; set; }
public int UserId { get; set; }
public DateTime LoginDate { get; set; }
}
Step 3
如果你有一个函数叫做DoLogin
.
public void DoLogin() {
//validation commes here...
//create your session
Session["User"] = user; //user is your User class object
//create session class for db
Session session = new Session();
session.SessionId = ""; //you can generate here a 24 character string
session.UserId = user.Id;
session.LoginDate = DateTime.Now;
db.Add(session); //add session to db
}
Step 4
创建一个函数来检查用户是否已经登录。
public bool IsLoggedIn(User user) {
Session session = db.GetSession(user.Id); //Get session of the user
if(session != null)
{
return true;
} else {
return false;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)