You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor WebApp(8.0):实现Logout功能并自定义登出跳转页面

问题解决方案

1. 更新配置文件指定登出重定向目标

在appsettings.json的AzureAdB2c节点添加SignedOutRedirectUri,指向你的自定义登录页路由:

{
  "AzureAdB2c": {
    "callbackPath": "/signin-oidc",
    "signedOutCallbackPath": "/signout-callback-oidc",
    "SignedOutRedirectUri": "/CustomLogin", // 替换为实际自定义登录页路径
    "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
    "domain": "xxxxxxxxb2cdev.onmicrosoft.com",
    "instance": "https://xxxxxxxxb2cdev.b2clogin.com/",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
     "SignUpSignInPolicyId": "B2C_1A_CC24PORTAL",
     "RedirectUri": "https://dev-xxxxxxxx-ui-eus-as.azurewebsites.net"
   },
   "BuildConfiguration": "DEV"
 }

2. 覆盖OpenIdConnect登出回调逻辑

在program.cs中修改身份认证配置,强制登出后跳转到自定义登录页:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        builder.Configuration.Bind("AzureAdB2c", options);
        // 自定义登出回调的重定向行为
        options.Events.OnSignedOutCallbackRedirect = context =>
        {
            context.Response.Redirect(options.SignedOutRedirectUri);
            context.HandleResponse();
            return Task.CompletedTask;
        };
    });

3. 替换Logout链接为代码触发逻辑

将NavMenu.razor中的静态链接改为按钮,添加完整的登出流程(包含清除本地会话数据):

<div class="nav-item px-3">
    <button class="nav-link btn btn-link" @onclick="HandleLogout">
        <span class="bi bi-box-arrow-right-nav-menu" aria-hidden="true"></span> Logout
    </button>
</div>

@code {
    @inject NavigationManager NavManager
    @inject IHttpContextAccessor HttpContextAccessor
    @inject ILocalStorageService LocalStorage

    private async Task HandleLogout()
    {
        // 清除本地存储的用户会话数据(如角色、用户信息)
        await LocalStorage.RemoveItemAsync("userSessionData"); // 替换为实际存储键

        // 清除ASP.NET Core认证Cookie
        await HttpContextAccessor.HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme);
        
        // 强制跳转到自定义登录页
        NavManager.NavigateTo("/CustomLogin", forceLoad: true);
    }
}

4. 验证Azure B2C后台配置

确保自定义登录页的URL已添加到Azure B2C应用注册的**回复URL(重定向URI)**列表中,同时确认登出策略的重定向设置允许指向该URL。


内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:15:55