在asp.net中,每个帐户的用户只有一次登录,而不使用内置的会员资格

本文关键字:登录 一次 内置 net asp 用户 | 更新日期: 2023-09-27 18:19:37

我使用C#开发了一个ASP.NET网站。还有一个简单的身份验证模块。用户可以简单地提交表单并成为会员。

问题领域:

说出这个场景;如果我以管理员身份登录,当然会使用一些唯一的用户名和密码,那么应该没有任何其他用户能够使用相同的身份验证信息登录。我明确表示每个用户帐户只有一个登录。

当然,我在网上冲浪,发现了一些不错的东西。(我试着回答,当然是8分)。事实上,它运行良好。但是,Session.Abandon();不清除Session["UsersLoggedIn"]

问题:当用户注销时,会话是清除的,并且很好。但当它再次登录的时间小于会话到期时间时,他失败了!原因是,Application["UsersLoggedIn"]仍然有一些值,因此Login方法中的if语句假设用户已经登录。我该如何处理这件事?

你知道吗?

感谢

在asp.net中,每个帐户的用户只有一次登录,而不使用内置的会员资格

这可能有助于构建解决方案。以下链接显示了如何执行您所说的(在ASP.NET MVC中),但此解决方案与您所需要的不同之处在于,此解决方案如下:用户Bob从他的PC登录。另一个用户使用相同的"Bob"用户ID从另一个设备登录(不同的会话ID)。第一个会话被终止,同时允许第二个会话继续运行。根据你所说的,我相信你需要相反的行为——当用户ID已经登录时,禁止同一用户ID的第二个实例登录,对吧?我相信你应该能够采取这个例子,并修改它,你需要它做什么

这是内置成员资格的自定义实现(我知道你说过你不想使用内置成员资格,但我认为你可以从下面的帖子中获得一些有用的信息)。

当同一个用户ID试图在多个设备上登录时,如何终止另一个设备上的会话?

请尝试调试事件。可能在"Session_End"之前调用了清除会话的方法,从而无法从存储在应用程序中的集合中删除UserLoggedIn。(我建议从Membership提供程序中获取名称,而不是在会话中拖动它。)