首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET可防止同一用户多次登录

问ASP.NET可防止同一用户多次登录
EN

Stack Overflow用户
提问于 2011-06-14 16:14:50
回答 3查看 1.3K关注 0票数 1

我对ASP.NET web应用程序有一个要求,即不允许同一用户多次登录。我认为这是为了防止人们共享用户名和密码。

我遇到的问题是,除非用户显式地从系统中注销,否则很难判断他是否仍在登录并使用系统。

因此,我能想到的实现这一点的唯一可靠方法是,每次用户与系统进行交互时,将用户id、IP地址和时间戳记录到数据库中,如果他们试图在此表中记录的最后日期的十分钟内登录,则将不属于该IP地址的任何其他人锁定。

有没有人能想出更好的方法来管理这件事呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-14 16:16:44

如果您使用ASP.NET MembershipProvider,则可以执行以下操作:

代码语言:javascript
复制
    protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
    {
        if (Membership.ValidateUser(Login1.UserName, Login1.Password))
        {
            int time = Membership.UserIsOnlineTimeWindow;

            MembershipUser user = Membership.GetUser(Login1.UserName, true);
            if (user != null)
            {
                if (user.IsOnline)
                {
                    lblMessaggeIsOnLine.Visible = true;
                    e.Cancel = true;
                }
                else
                    lblMessaggeIsOnLine.Visible = false;
            }
        }
    }
票数 6
EN

Stack Overflow用户

发布于 2011-06-14 16:22:42

如果您的会话状态模式不是SqlServer,则可以在global.asax中使用SqlServer事件。

例如:

您的配置:

代码语言:javascript
复制
<sessionState timeout="15"></sessionState>

15分钟后,您的sessionend事件被触发,您可以注销用户

票数 1
EN

Stack Overflow用户

发布于 2011-06-14 16:23:35

你是正确的。您需要管理用户登录并执行相应的操作。让我知道您是使用自己的提供程序,还是使用ASP.NET提供程序。默认提供程序中有一些选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6340813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档