asp.net-mvc-3 - 如何阻止同一用户在另一台计算机上登录?

标签 asp.net-mvc-3 sqlmembershipprovider

我基本上想在我的LogOn操作中设置一个条件语句来查看用户名,并确定该用户名已经登录。

此时应通知用户。

该帐户已登录,如果您认为自己已被劫持...yada yada yada。

我想我可以在这个条件之后添加一些东西,是否已经有像我编写的方法 Membership.CheckIfUserIsOnline(string username) 那样的东西了?

   if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            //See the line below, I made this method up.
            if (Membership.CheckIfUserIsOnline(model.UserName){
                ModelState.AddModelError("", "Someone else is logged into this account.");
            }

最佳答案

如果您使用 session 状态,我将存储(最好在应用程序范围的缓存中或在应用程序数据库中)以用户 ID 为键的记录,存储 session ID。

然后,当您要检测多次登录时,请根据当前 session ID 检查已登录的用户 ID。如果数据库中存储的 session ID 与当前 session 的 session ID 不匹配,则可能表示多次登录。

您必须处理数据存储中的值过期(这就是应用程序范围的缓存可能比应用程序数据库更好的原因)以及 session 的正常终止(注销时),但如果您只是用它来提醒用户,这可能就足够了。

关于asp.net-mvc-3 - 如何阻止同一用户在另一台计算机上登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751557/

相关文章:

asp.net-mvc-3 - MVC3 模型未从表单发回 List<CustomObject>

c# - 将 ActiveDirectoryMembershipProvider 与 SqlMembershipProvider 一起使用

c# - 重现 SqlMembershipProvider 密码哈希

asp.net-mvc-3 - Multi-Tenancy SQLMembershipProvider ASP.NET MVC

mysql - 无法初始化提供程序。架构缺失或不正确。用于 MySql.Web 连接器

asp.net-mvc-3 - 使用 mvc3 下拉列表的 jquery 自动完成

asp.net-mvc-3 - Request.Url什么时候可以为空?

c# - Microsoft.AspNet.SignalR : Getting Uncaught TypeError: Object #<Object> has no method 'Logon'

asp.net-mvc - 如何使用 ASP.NET MVC 2 和 3 在 Site.Master 页面中设置标题的全局文本?

.net - .NET 4.0 中的错误加密错误