使用Azure B2C验证的Blazor服务端应用登出后如何重定向至首页?
实现Blazor服务端+Azure B2C登出后直接跳转首页的方案
方案1:修改前端登出链接(最快生效)
直接修改你现有代码里的登出跳转地址,拼接重定向参数即可,修改后的代码如下:
<AuthorizeView> <Authorized> @if (canEditProfile) { <a href="MicrosoftIdentity/Account/EditProfile" style="color: white">Hello, @context.User.Identity.Name!</a> } else { <span style="color: white">Hello, @context.User.Identity.Name!</span> } <!-- 仅修改这一行的href,增加重定向参数 --> <a href="MicrosoftIdentity/Account/SignOut?post_logout_redirect_uri=/" style="color: white">Log out</a> </Authorized> <NotAuthorized> <a href="MicrosoftIdentity/Account/SignIn" style="color: white">Log in</a> </NotAuthorized> </AuthorizeView>
如果你的首页/登录页不是根路径,把参数值/换成对应路径即可,比如/login。
方案2:全局配置默认登出跳转规则(一劳永逸)
如果你希望所有登出场景默认都跳首页,不需要每个登出链接都拼参数,可以在程序启动配置里加拦截规则:
找到你项目的Program.cs(.NET 6及以上版本)或者Startup.cs(.NET 5及以下版本)中的身份验证配置段,添加如下代码:
// 原有Azure B2C身份验证配置保留,新增下面这段配置 builder.Services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options => { options.Events.OnSignedOutCallbackRedirect = context => { // 这里的"/"就是跳转的目标首页地址,需要的话自行替换 context.Response.Redirect("/"); context.HandleResponse(); return Task.CompletedTask; }; });
必须校验的Azure B2C配置
你需要登录Azure门户进入对应B2C租户的应用注册页,在「身份验证」板块的登出重定向URI列表里,确认你要跳转的首页地址已经被添加进去,否则B2C会出于安全规则拒绝跳转请求,仍然会跳到默认登出成功页。
内容的提问来源于stack exchange,提问作者David Shochet
相关产品推荐
相关产品推荐

