Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SignOutAsync()未将用户注销_C#_Asp.net Core_Asp.net Web Api_Identity_Logout - Fatal编程技术网

C# SignOutAsync()未将用户注销

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

我有一个MVC应用程序,它有两个WebAPI端点。原因是我们有一个应用程序,应该能够与应用程序进行通信。对于身份验证,我使用的是标识

在我登录并想再次注销后,它会在UI中工作。因此,我在其中一个API端点的注销操作中实现了相同的逻辑:

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测试了这一点,它确实有效。