我有一个具有两个WebAPI端点的MVC应用程序。原因是我们有一个应该能够与该应用程序通信的应用程序。对于身份验证,我正在使用身份。
我登录并要再次注销后,它可以在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端点,如果有什么不同的话。
答案 0 :(得分:2)
现在您仅具有cookie身份验证,并且在调用SignOutAsync()
时会生成响应,指示删除身份验证cookie,并针对该浏览器删除身份验证cookie,因此在在下一个呼叫中没有cookie,并且您也不再登录,但是如果您在注销之前存储身份验证cookie,然后在注销后将其添加到浏览器中,则您仍登录,因为您的凭据在Cookie中。
这就是浏览器的行为,邮递员或HttpClient
中没有这种行为。
您的选择是将Reference Token用于您的api
或
您可以使用Cookie身份验证来配置Session Store