首页 > 解决方案 > 在 .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>

在此处输入图像描述

标签: authenticationasp.net-coreazure-active-directory

解决方案


一种方法是使用自定义URL 重写中间件通过检查路径来重定向,在之前放置以下代码app.UseMvc

app.UseRewriter(
    new RewriteOptions().Add(
        context => { if (context.HttpContext.Request.Path == "/MicrosoftIdentity/Account/SignedOut")
            { context.HttpContext.Response.Redirect("/Index"); }
        })
);

推荐阅读