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

Blazor Server集成Azure AD B2C:登录后返回原请求页面

解决Blazor Server Azure AD B2C登录后返回原请求页面的问题

你的核心问题是登录链接未传递当前访问页面的地址,导致Azure AD B2C完成认证后无法跳转回原页面。以下是具体解决方案:

1. 动态传递ReturnUrl到登录链接

在使用AuthorizeView的Razor组件中,通过NavigationManager获取当前页面URI,将其作为returnUrl参数拼接在登录链接后:

@inject NavigationManager NavManager

<AuthorizeView>
    <Authorized>
        <!-- 已登录时展示的页面内容 -->
        <h2>Registration Wizard - Step 02</h2>
        <!-- 你的业务内容 -->
    </Authorized>
    <NotAuthorized>
        <!-- 生成带ReturnUrl的登录链接,对URI转义避免编码问题 -->
        <a href="@($"MicrosoftIdentity/Account/SignIn?returnUrl={Uri.EscapeDataString(NavManager.Uri)}")">登录以继续</a>
    </NotAuthorized>
</AuthorizeView>

2. 确保认证配置与参数匹配

你的启动配置中options.ReturnUrlParameter = "returnUrl"是正确的,因为Microsoft Identity UI默认使用该参数名,保持当前配置即可。

另外需确认Azure AD B2C应用注册中的**回复URL(Redirect URI)**已正确配置为https://<你的应用域名>/signin-oidc,这是认证流程完成后接收回调的必要地址。

3. 可选:使用[Authorize]属性自动处理重定向

如果页面需要强制登录,可直接在Razor组件上添加[Authorize]属性,Blazor会自动触发登录重定向并携带当前页面的returnUrl:

@page "/registrationwizard/02"
@attribute [Authorize]

<!-- 页面内容 -->
<h2>Registration Wizard - Step 02</h2>

这种方式无需手动编写登录链接,未登录用户访问时会自动跳转到登录页,完成认证后直接返回原页面。

关键说明

之前登录后跳转到默认页面,是因为登录请求未携带returnUrl参数,认证服务无法得知需要跳转回哪个页面。只要确保登录链接包含正确的returnUrl,且认证配置中的参数名一致,就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:15:36