【问题标题】:How to remove cookies asp.net core authorization如何删除cookie asp.net核心授权
【发布时间】:2018-08-12 19:21:05
【问题描述】:

如果我删除了具有基于 cookie 的授权的用户,在他按下注销按钮之前,他仍然可以访问系统。或者直到 cookie 过期。

如何解决这种情况。

【问题讨论】:

  • 使用SignInManager.SignOutAsync()

标签: c# asp.net visual-studio asp.net-core


【解决方案1】:

这是删除用户访问权限时基于声明的身份验证的一般问题。由于它的设计方式,不会在每次请求时都访问数据库以验证访问。相反,加密签名的 cookie 被认为是事实的来源。因此,当数据库中的访问权限被删除时,cookie 仍然有效,在这种情况下如何更新用户的 cookie 并非易事。由于它是存储在客户端的cookie,因此您也不能只是远程注销用户。

但是 ASP.NET Core Identity 中有一种机制可以强制 cookie 身份验证方案在特定时间间隔内重新验证身份。您可以在StartupConfigureServices 方法中这样配置:

services.Configure<SecurityStampValidatorOptions>(options =>
{
     options.ValidationInterval = TimeSpan.FromMinutes(10);
});

这会将间隔设置为 10 分钟。因此,每 10 分钟,将验证使用现有 cookie 访问您网站的用户,并发布一个新 cookie。这个过程是完全无声的,并且发生在幕后。

根据您希望执行此操作的严格程度,您必须进一步降低此间隔。我通常会建议您在一定时间内仍然保留它。否则,您将违背缓存身份的目的。

您还应该考虑,如果用户仍然可以访问您的网站,这会带来多大的问题,以及移除用户的时间紧迫性。根据您的应用程序,您也不太可能在关键操作中检索用户实体,因此在这种情况下这会自动失败,而您不必通过删除 cookie 来拒绝访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 2020-04-20
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2019-08-21
    • 2018-08-02
    相关资源
    最近更新 更多