SignOutAsync() 没有注销用户

SignOutAsync() not logging user out

我有一个 MVC 应用程序,它有几个 WebAPI 端点。这样做的原因是我们有一个应该能够与应用程序通信的应用程序。对于身份验证,我使用的是 Identity。

登录后又想退出,在UI有效。因此,我在 API 端点之一的注销操作中实现了相同的逻辑:

public async Task<JsonResult> LogOut()
{
    await _signInManager.SignOutAsync();            
    _logger.LogInformation("User logged out.");

    return new JsonResult(new { Anything = "Logout successful." });
}

当我搜索相同的问题时,我也尝试了我在这里找到的大部分方法。但是,无论我做什么,cookie“.AspNetCore.Identity.Application”总是在下一个请求中,我仍然通过身份验证。

我正在使用 Postman 测试 API 个端点,如果这有什么不同的话。

现在您只有 cookie 身份验证,当您调用 SignOutAsync() 时,正在生成一个响应,指示删除身份验证 cookie,作为响应,browser 删除身份验证 cookie,因此在下一次调用中没有 cookie,您不再登录,但是如果您在注销前存储身份验证 cookie,然后在注销后将其添加到浏览器,您仍然 登录 因为您的凭据在 cookie 中。

这就是浏览器的行为方式,邮递员或 HttpClient 中没有这种行为。

您的选择是使用 Reference Token 作为您的 API

您可以使用 Cookie 身份验证配置 Session Store