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
我有一个 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