29

私はこれを読みましたがロールの変更が最終的にどのようにユーザーの Cookie に反映されるかを説明していますが、ユーザーのロールを即座に変更する方法をまだ理解していません。

ユーザーのロールを管理者として変更する場合、ユーザーをサインアウトする必要がありますか? もしそうなら—どのように?使用する場合AuthenticationManager.SignOut();は、役割を変更したいユーザーではなく、自分自身 (管理者) をサインオフします。

現在await UserManager.UpdateSecurityStampAsync(user.Id);、新しいセキュリティ スタンプを生成するために使用していますが、機能しません。別のユーザーとしてログインしているときに別のブラウザーでページを更新しても、彼のクレーム (セキュリティ スタンプを含む) は変わりません。

4

1 に答える 1

18

Cookie の即時取り消しを有効にする場合は、すべてのリクエストがデータベースにヒットして Cookie を検証する必要があります。したがって、遅延のトレードオフはデータベースの負荷にあります。ただし、validationInterval はいつでも 0 に設定できます。

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        // Enables the application to validate the security stamp when the user logs in.
        // This is a security feature which is used when you change a password or add an external login to your account.  
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromSeconds(0),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});
于 2014-06-19T22:12:13.617 に答える