ASP.net Identity 2.0 Sign-out another user

11 浏览
0 Comments

ASP.net Identity 2.0 Sign-out another user

我正在使用asp.net MVC和ASP.net Identity 2.0。

在我的网站上,管理员有禁止用户的选项,当用户被禁止时,我希望他能自动从网站上注销。

我知道我可以通过调用AuthenticationManager.SignOut();来注销当前用户。

但是有没有可能注销其他用户?或者缩短他的会话时间?或者其他方法?

我知道我可以在控制器上设置全局过滤器,禁止被禁止的用户访问,但是该过滤器会对每个用户执行,所以我对这个解决方案不太满意。

0
0 Comments

ASP.net Identity 2.0 Sign-out another user问题的原因是需要在Auth.Config.cs文件中配置cookie的无效化。解决方法是在配置文件中添加以下代码:

public void ConfigureAuth(IAppBuilder app)
{
    // important to register UserManager creation delegate. Won't work without it
    app.CreatePerOwinContext(UserManager.Create);
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        Provider = new CookieAuthenticationProvider
        {
            OnValidateIdentity = SecurityStampValidator
                .OnValidateIdentity(
                    validateInterval: TimeSpan.FromMinutes(10),
                    regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager))
        },
        // other configurations
    });
    // other stuff
}

在用户被封禁时,可以根据Hao Kung的建议更新安全标记(security stamp)。

作者也在最近的博客中提到了这个问题。

对于使用autofac的情况,可以使用以下代码:

app.CreatePerOwinContext(() => DependencyResolver.Current.GetService());
app.CreatePerOwinContext(() => DependencyResolver.Current.GetService>());

对于使用标准模板的情况,可以使用以下代码:

app.CreatePerOwinContext(ApplicationUserManager.Create);

需要注意的是,这个解决方法是针对ASP.net Identity 2.0版本的,可能不适用于其他版本。

需要注意的是,这个问题的答案是在8年前给出的,那个时候还没有.NET Core,更不用说.NET Core 6了。因此,这个答案可能与你的代码不匹配。

0
0 Comments

问题的出现原因:

在使用securitystampvalidator功能时,当一个用户被禁止时,只需调用UpdateSecurityStamp(userId),以使任何现有的登录cookie在下次检查时无效。

解决方法:

1. 确保在项目中加入了UpdateSecurityStamp(userId)代码。

2. 需要配置security stamp的validateInterval,以确定cookie的验证频率。

如果您使用securitystampvalidator功能,当一个用户被禁止时,只需调用UpdateSecurityStamp(userId)以使任何现有的登录cookie在下次检查时无效。

如果您在项目中加入了这行代码,但用户没有被注销,那么您需要进一步解释如何使用它。

实际上,这行代码不会立即注销用户,而是需要在security stamp上配置validateInterval,以确定cookie的验证频率。

0