gpt4 book ai didi

azure-active-directory - 如何在 Microsoft.Identity.Web 中定义 SignedOut 页面?

转载 作者:行者123 更新时间:2023-12-04 12:23:17 24 4
gpt4 key购买 nike

我在 Blazor 服务器应用程序中使用 Azure AD B2C 成功登录和注销,但我不清楚定义 SignedOut 页面的正确方法。这个问题似乎更适用于 Microsoft.Identity.Web.UI ,因为这个 SignedOut 页面似乎被硬编码为一个非常通用的 SignedOut.cshtml:

Signed out
You have successfully signed out.


文档似乎表明这可以改变,但它没有说明具体如何。
来自 documentation :
“默认情况下,注销 URL 显示注销 View 页面 SignedOut.cshtml.cs。此页面也作为 MIcrosoft.Identity.Web 的一部分提供。”
鉴于我正在编写 Blazor 应用程序,我尝试创建一个 SignedOut.razor 组件,但这并没有覆盖它:
@page "/MicrosoftIdentity/Account/SignedOut"
这是来自 Microsoft.Identity.Web.UI 的来源.如您所见,它是硬编码的。
        public IActionResult SignOut([FromRoute] string scheme)
{
if (AppServicesAuthenticationInformation.IsAppServicesAadAuthenticationEnabled)
{
return LocalRedirect(AppServicesAuthenticationInformation.LogoutUrl);
}
else
{
scheme ??= OpenIdConnectDefaults.AuthenticationScheme;
var callbackUrl = Url.Page("/Account/SignedOut", pageHandler: null, values: null, protocol: Request.Scheme);
return SignOut(
new AuthenticationProperties
{
RedirectUri = callbackUrl,
},
CookieAuthenticationDefaults.AuthenticationScheme,
scheme);
}
}

最佳答案

Microsoft.Identity.Web v1.9
更新:这是我的首选方法
只需将其添加到配置下的 startup.cs 中即可。在这里,我刚刚重定向到我的主页,但如果您愿意,您可以重定向到您自己的自定义注销页面。

        app.UseRewriter(
new RewriteOptions().Add(
context =>
{
if (context.HttpContext.Request.Path == "/MicrosoftIdentity/Account/SignedOut")
{
context.HttpContext.Response.Redirect("/");
}
}));
方法#2
在写这个问题时,我确实找到了一种非常简单的方法来做到这一点。这是预期的方式似乎仍然很奇怪,所以请随时改进或添加更好的答案。我怀疑会出现新版本以使这更容易。
因为 Microsoft.Identity.Web.UI 是 Reusable Class Library (RCL) ,只需将任何页面添加到 Web 应用程序的同一位置即可覆盖。
如您所见,我几乎通过创建自己的 SignedOut.razor 页面并为其提供与 URL 相同的路径来完成此操作。这不起作用,因为它是一个 razor 组件,它必须匹配源中的路径,而不是 Web 应用程序中的 URL。
幸好它是开源的。我必须在这里找到路径,因为它对我来说并不明显。
https://github.com/AzureAD/microsoft-identity-web
所以这里是您在项目中需要的正确路径,以及我能找到的最佳答案,它正在努力为您自己提供一个真正的 SignedOut 页面。如果您不想要 SignedOut 页面,我想您必须在此处添加重定向。
区域/MicrosoftIdentity/Pages/Account/SignedOut.cshtml

关于azure-active-directory - 如何在 Microsoft.Identity.Web 中定义 SignedOut 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65119397/

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