C# SignOutAsync()未将用户注销
我有一个MVC应用程序,它有两个WebAPI端点。原因是我们有一个应用程序,应该能够与应用程序进行通信。对于身份验证,我使用的是标识 在我登录并想再次注销后,它会在UI中工作。因此,我在其中一个API端点的注销操作中实现了相同的逻辑:C# SignOutAsync()未将用户注销,c#,asp.net-core,asp.net-web-api,identity,logout,C#,Asp.net Core,Asp.net Web Api,Identity,Logout,我有一个MVC应用程序,它有两个WebAPI端点。原因是我们有一个应用程序,应该能够与应用程序进行通信。对于身份验证,我使用的是标识 在我登录并想再次注销后,它会在UI中工作。因此,我在其中一个API端点的注销操作中实现了相同的逻辑: public async Task<JsonResult> LogOut() { await _signInManager.SignOutAsync(); _logger.LogInformation("User
public async Task<JsonResult> LogOut()
{
await _signInManager.SignOutAsync();
_logger.LogInformation("User logged out.");
return new JsonResult(new { Anything = "Logout successful." });
}
public异步任务注销()
{
等待_signInManager.SignOutAsync();
_logger.LogInformation(“用户注销”);
返回新的JsonResult(new{Anything=“Logout successful.”);
}
当我搜索同一个问题时,我也尝试了我在这里找到的大多数方法。然而,无论我做什么,cookie“.AspNetCore.Identity.Application”总是在下一个请求中,并且我仍然是经过身份验证的
我正在使用Postman来测试API端点,如果这有什么不同的话。现在您只有cookie身份验证,当您调用
SignOutAsync()时
正在生成一个响应,指示删除身份验证cookie,作为对该浏览器的响应,删除身份验证cookie,因此在下一次呼叫中没有cookie,您不再登录,但如果您在注销前存储身份验证cookie,然后在注销后将其添加到浏览器中注销您仍然登录,因为您的凭据在cookie中
这就是浏览器的行为,在postman或HttpClient
中没有这种行为
您的选项是将其用于API
或
您可以使用Cookie身份验证配置一个,现在您只有Cookie身份验证,当您调用
SignOutAsync()时
正在生成一个响应,指示删除身份验证cookie,作为对该浏览器的响应,删除身份验证cookie,因此在下一次呼叫中没有cookie,您不再登录,但如果您在注销前存储身份验证cookie,然后在注销后将其添加到浏览器中注销您仍然登录,因为您的凭据在cookie中
这就是浏览器的行为,在postman或HttpClient
中没有这种行为
您的选项是将其用于API
或
您可以使用Cookie身份验证配置一个是否希望它在Postman中工作?因为据我所知,你可以在UI中注销,但不能在postman中注销?你希望它在postman中工作吗?因为据我所知,你可以在UI中注销,但不能在邮递员中注销?我刚刚在Chrome开发控制台中使用AJAX测试了这一点,它确实有效。我刚刚在Chrome开发控制台中使用AJAX测试了这一点,它确实有效。