.NET Core 5 MVC对接微软身份提供商登出自定义重定向URL问题咨询
.NET Core 5 MVC Azure AD 登出自定义重定向解决方案
前提校验
- 先修正appsettings.json配置的笔误:你现有配置中
SignedOutCallbackPath键名末尾多了一个空格,删除空格保证键名正确:
"CallbackPath": "/signin-oidc", "SignedOutCallbackPath": "/signout-callback-oidc"
- 登录Azure Portal进入对应应用注册页,在「身份验证」-「登出URL」配置中添加你需要跳转的目标页面完整地址(包含域名,如
https://your-app-domain/Home/Index),保存配置。
方案一:自定义登出Action(最稳定可控)
你用的AddMicrosoftIdentityUI()提供了默认的登出逻辑,你可以自定义AccountController覆盖默认行为:
- 新建
Controllers/AccountController.cs,代码如下:
using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Mvc; namespace YourAppNamespace.Controllers { public class AccountController : Controller { public IActionResult SignOut() { // 替换为你要跳转的目标页面地址,此处示例跳转到首页 var redirectTarget = Url.Action("Index", "Home", null, Request.Scheme); return SignOut( new AuthenticationProperties { RedirectUri = redirectTarget }, CookieAuthenticationDefaults.AuthenticationScheme, OpenIdConnectDefaults.AuthenticationScheme ); } } }
- 将页面上原有登出链接替换为指向
/Account/SignOut即可。
方案二:全局配置默认重定向地址(无需修改登出链接)
如果不想自定义Controller,可以直接在Startup.cs的ConfigureServices方法中配置OpenIdConnect选项指定全局默认登出跳转地址:
services.AddMicrosoftIdentityWebAppAuthentication(Configuration); // 新增这段配置 services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options => { // 此处替换为你的目标页面路径 options.PostLogoutRedirectUri = "/Home/Index"; }); services.AddControllersWithViews(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
注意:SignedOutCallbackPath是Azure AD和应用完成登出交互的内部回调路径,不要修改该值,也不要和你自定义的登出跳转地址混淆
内容的提问来源于stack exchange,提问作者misuk
相关产品推荐
相关产品推荐

