ASP.NET登录后,每登录一次其他连接
我正在为学校做一个项目。我有一个用ASP.Net编写的网站,我只是做了一个简单的登录系统。当用户输入电子邮件和密码时,我查询数据库并确保它们有效 现在我想知道谁登录了,所以我有一个名为User.cs的类来跟踪登录的人ASP.NET登录后,每登录一次其他连接,asp.net,login,web,logout,Asp.net,Login,Web,Logout,我正在为学校做一个项目。我有一个用ASP.Net编写的网站,我只是做了一个简单的登录系统。当用户输入电子邮件和密码时,我查询数据库并确保它们有效 现在我想知道谁登录了,所以我有一个名为User.cs的类来跟踪登录的人 public class User { static public bool loggedIn = false; static public int userType = -1;//1 = Agent, 2 = Buyer/Renter static pub
public class User
{
static public bool loggedIn = false;
static public int userType = -1;//1 = Agent, 2 = Buyer/Renter
static public int id = -1;//the id of the user
}
例如,在User.cs
中,有一个名为bool loggedIn
的变量。单击“登录”按钮后,我将其设置为true
,以便在Page\u Load()
期间,如果需要,我可以使“登录/注册”按钮不可见。我使用IIS部署了该网站,并通过从计算机登录进行了测试,效果非常好。然后我从另一台计算机登录,我仍然是第一次登录后的最后一个用户。我注销了,我也从我打开网站的所有其他计算机上注销了
因此,最后,我不知道如何建立一个正确的登录系统。好的,所以您遇到的第一个问题是登录的用户信息是静态的。因此,它可用于应用程序的所有实例。因此,当您登录时,这就是在任何地方登录的用户,当您注销时,您在任何地方注销。 那么,让我们安装
用户
类,我们将:
public class User
{
public bool loggedIn = false;
public int userType = -1;//1 = Agent, 2 = Buyer/Renter
public int id = -1;//the id of the user
}
现在,这将修复登录用户到其实例的范围。但我们还没有完成,我们需要将这些信息存储在某个地方,以便您可以在回邮等方式上恢复这些信息。让我们使用Session
,这是有意义的,因为他们是为Session登录的,对吗?因此,在Page\u Load
上,验证用户时,也要执行以下操作:
var usr = new User
{
loggedIn = true,
userType = ?, // pull this value from the database
id = ? // pull this value from the database
};
Session["User"] = usr;
现在,当您想要访问该用户时,可以将其从会话中拉出:
var usr = Session["User"] as User;
// if usr is null then there is no logged in user
// otherwise, if it's NOT null there is a logged in user for this session
第一种方法:当用户单击注销时,用户类中的loggedIn变量再次变为false
但正确的方法是,在后端数据库中,您必须在用户表中添加一个新列“IsLoggedIn”。其默认值为0,表示为false,用户登录后将其设置为true。因此,您可以轻松跟踪谁在线或不在线。感谢您的回答。因此,当logInPage.Master.cs中发生LoginButton_单击时,我使用非静态变量创建一个用户对象,然后将这个新的用户对象实例放入会话中。登录按钮点击后,我将用户重定向到HomePage.aspx。HomePage.Master.cs的Page_Load()函数我需要访问会话并查看是否有登录用户,以便决定显示“创建列表”按钮。但现在会话必须是一个全局变量?这不会产生同样的问题吗?@Yunus,Session根据定义不是一个全局变量,它实际上是一个特殊的字典,当用户从浏览器访问您的站点时,它会在IIS上创建。该会话是基于cookies、IP地址和其他机制进行管理和加载的。这很有趣,我不知道。我以为这节课是我必须写的另一节课。谢谢你的帮助!