如何保持认证Cookie和(ASP.NET)会话同步?

3
我们正在开发一个ASP.NET vNext项目,并实现简单的基于cookie的身份验证。
我们考虑使用auth-cookie来验证用户是否已经通过身份验证。它的创建方式如下:
HttpContext.Authentication.SignInAsync();

用户对象本身将被保存到会话缓存(ISession)中。
  • 这是一个可以使用的实践方法吗,还是我们完全想错了?
  • 如果基本思路正确,如何保持认证 cookie 和会话同步?(未经身份验证的用户在会话缓存中具有用户对象将很糟糕)

请注意,不仅用户对象应存储在会话中。如果用户已通过身份验证,则应在其中存储一系列信息。

感谢您的贡献!


你有进展了吗? - Danny van der Kraan
1个回答

1
考虑到您的要求,您可以使用 Cookie 中间件 来在请求之间保留用户,并使用 基于声明的授权 来保留您想要记住的有关用户的其他信息。因此,在 Configure 方法中的 Startup 类中,您可以添加 cookie 中间件,例如:
            app.UseCookieAuthentication(options =>
        {
            options.AuthenticationScheme = "Cookies";
            options.AutomaticAuthenticate = true;
            options.AutomaticChallenge = true;
            options.LoginPath = new PathString(@"/account/login");
            options.AccessDeniedPath = new PathString(@"/account/accessdenied");

        });

然后在ConfigureServices中,您可以设置所需的声明,例如:

   services.AddAuthorization(options =>
{
    options.AddPolicy("EmployeeOnly", policy => policy.RequireClaim("EmployeeNumber"));
});

请查看相关文档,了解如何设置此项功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接