注销具有相同用户名asp标识的所有用户



我最近在我的网站上实现了asp身份系统。

现在,由于我不希望我的用户在他们之间使用帐户,我想注销使用相同用户名的人。我注意到我有一个AspNetUserLogins,理论上我可以从那里删除加倍的项目,但它总是空的。

我执行得不好吗?它应该是空的吗?除此之外,一切似乎都很顺利。

如果它应该是空的,我必须手动填充吗?

在我为AspNetUserClaims进行自定义声明之前,它是否也应该为空?

关于如何实现这个自动注销系统,还有其他想法吗?

编辑:做了一些简单的研究,发现aspnetusers登录只用于外部登录。但是,究竟是什么保存了登录者的日志?

您需要将登录用户的列表存储在数据库或文件中的某个位置。当一个新用户尝试登录时,如果一个有名字的用户已经登录或没有登录,则搜索以前的记录。

如果发现重复,则只更新SecurityStamp

UserManager.UpdateSecurityStampAsync(userId);

所以,下次当前用户验证间隔结束并且发现SecurityStamp无效时,他将自动注销。您可以在idedntity配置类中找到验证间隔。

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    ExpireTimeSpan = System.TimeSpan.FromDays(30),
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    Provider = new CookieAuthenticationProvider
    {                           
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});

调用上述方法后,只需登录新用户并更新您的登录记录列表。

NTOE执行此类政策是一种非常糟糕的做法。尽量避免。即使是不同的浏览器,或者一个具有单独会话的浏览器,也会被视为重复登录。

最新更新