authentication - 在 .NET 核心中使用 Azure AD 身份验证时如何指定自定义注销 URL
问题描述
我有一个使用工作或学校帐户(Azure AD 身份验证)的 ASP.NET 核心 2.2 Web 应用程序。当我退出时,应用程序结束于
/AzureAD/帐户/已注销
我希望它使用应用程序注册中指定的注销 URL 重定向回主页。请参阅下面的屏幕截图。在此处指定注销 URL 时,Azure AD 实际上会调用该页面(以清除会话数据),但最终会在 /AzureAD/Account/SignedOut 位置结束。我没有看到其他任何地方指定注销 URL 的等效项。这是使用 Azure AD 身份验证时由 Visual Studio 生成的注销按钮的代码。
<a asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a>
我还尝试将重定向直接添加到操作中。
<a asp-area="AzureAD" asp-controller="Account" asp-route-post_logout_redirect_uri="https://localhost:44381" asp-action="SignOut">Sign out</a>
解决方案
一种方法是使用自定义URL 重写中间件通过检查路径来重定向,在之前放置以下代码app.UseMvc
:
app.UseRewriter(
new RewriteOptions().Add(
context => { if (context.HttpContext.Request.Path == "/MicrosoftIdentity/Account/SignedOut")
{ context.HttpContext.Response.Redirect("/Index"); }
})
);
推荐阅读
- android - 如何在 Kotlin for Android 中为动态生成的视图设置唯一 id?
- html - Html 未与样式表链接
- r - 在许多反应性对象中使用 if 语句不起作用
- kubernetes - 防火墙下 aks 上的 sgx 插件 CrashLoopBackOff 不起作用
- html - Twitter HTML 嵌入代码无法完全运行
- c# - 如何在 Func 中“输出”
在c#中 - android - 如何在折叠模式下隐藏工具栏并在正常模式下显示
- iis - HTTP 错误 500.30 - ASP.NET Core 应用程序无法在 IIS 服务器上启动
- sql - Snowsql MERGE 语句插入问题
- python - 如何从 Python 获取文件中的最后一个字符?