请查看代码vlow,该代码来自MVC应用程序中的Startup.cs。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddCustomMvc(Configuration)
.AddHttpClientServices(Configuration);
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ClientId = "mvc2";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("MyAPI1");
options.Scope.Add("MyAPI2");
options.Scope.Add("offline_access");
});
}
身份验证和授权在MyAPI1和myAPI2中正常工作,但是我无法注销。我已经尝试过了:
await HttpContext.SignOutAsync("Cookies");
这:
await HttpContext.SignOutAsync();
用户未注销。用户如何注销?
答案 0 :(得分:0)
您可以将以下代码添加到某个控制器以触发注销:
public IActionResult Logout()
{
return SignOut("Cookies", "oidc");
}
这将清除本地cookie,然后重定向到IdentityServer。 IdentityServer将清除其cookie,然后为用户提供一个链接以返回到MVC应用程序。还记得在IDS的客户端配置中设置PostLogoutRedirectUris
。