gpt4 book ai didi

c# - 身份服务器 4 : Proper logout from MVC Client

转载 作者:行者123 更新时间:2023-12-03 17:03:38 26 4
gpt4 key购买 nike

我在 IdentityServer 4 中的注销功能遇到了麻烦。
我的 IS4 应用程序主要是他们网站上教程的结果,所以他们并不是真正的自定义行为。我也使用 ASP.net Core Identity。
我有一个 MVC 客户端(同样,基本上是项目模板)。我刚刚在索引页面的顶部添加了一个“注销”按钮,以便将当前经过身份验证的用户注销。

这是我的 MVC 客户端中的注销方法:

public async Task Logout()
{
await HttpContext.SignOutAsync("Cookies");
await HttpContext.SignOutAsync("oidc");
}

这正是教程所说的。

这是 MVC Client 的 Startup.cs 中的配置:
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.CallbackPath = new PathString("/Home/");

options.ClientId = "Core.WebUI";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";

options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;

options.Scope.Add("offline_access");
});

没有什么花哨...
现在 IS4 应用程序中的 MVC 客户端配置:
new Client
{
ClientId = "Core.WebUI",
ClientName = "MVC Client",
ClientSecrets = new List<Secret>
{
new Secret("secret".Sha256())
},
AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,
RequireConsent = false,

// where to redirect to after login
RedirectUris = { "http://localhost:5011/Home/" },

// where to redirect to after logout
PostLogoutRedirectUris = { "http://localhost:5011/Home/" },
AlwaysSendClientClaims = true,
AlwaysIncludeUserClaimsInIdToken = true,
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile
},
AllowOfflineAccess = true
}

同样,主要是教程所说的。
我的问题是:
当用户连接时,然后我单击注销按钮,我被重定向到 IS4 应用程序,在注销页面中,说我现在已注销。但实际上,我不是,因为如果我回到我的 MVC,我仍然可以访问 protected 功能(使用 Authorize 属性)。为了正确注销我的用户,一旦我进入我的 D4 应用程序的注销页面,我必须点击 IS4 应用程序的注销按钮......然后我才能正确注销......

我想要的是,当我单击 MVC 客户端上的“注销”按钮时,我真的会注销,并直接重定向到我的 MVC 客户端的主页(没有“您现在已注销”页面)

我对 IS4 和 ADP.NET 还很陌生,所以非常欢迎任何帮助......谢谢!

最佳答案

这是我解决这个问题的方法:

    public IActionResult LogOff()
{
return new SignOutResult(new[] { "oidc", "Cookies" });
}

关于c# - 身份服务器 4 : Proper logout from MVC Client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53556129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com