检查用户是否已经登录asp.net网站

2023-12-01

我正在开发一个网站,用户需要登录系统才能使用它。当前的功能是: 当用户输入用户名和密码时,数据库会检查该用户是否存在以及是否输入了正确的密码。 然后才允许该用户登录。

到目前为止一切都很好,现在客户端想要向日志记录功能添加一项​​功能,即客户端想要限制该用户仅存在 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(使用前将#替换为@)

检查用户是否已经登录asp.net网站 的相关文章

随机推荐