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

如何解决Blazor WASM登录成功后跳转指定页面触发二次加载的问题

解决方案

方案1(推荐,无重复加载问题)

你第一次尝试的方案未生效,是因为你将当前访问的URI作为了returnUrl参数,若要固定所有登录成功场景都跳转到/Holidays,直接将returnUrl写为指定路径即可:

protected override void OnInitialized()
{
    Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString("/Holidays")}");
}

该方案是Blazor WASM认证体系的标准实现,逻辑简洁,不会出现重复跳转问题。

方案2(适配需要自定义登录后逻辑的场景)

如果你有特殊需求必须通过RemoteAuthenticatorView的OnLogInSucceeded事件实现跳转,出现两次触发的原因是该组件处理登录回调时会经历多轮状态变更,每轮符合条件的渲染都会触发该事件,可以加一个执行标志位避免重复执行:

@page "/authentication/{action}"
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@inject NavigationManager Navigation

<RemoteAuthenticatorView Action="@Action" OnLogInSucceeded="@RedirectToHolidayViewer" />

@code{
    [Parameter] public string Action { get; set; }
    // 防重复执行标志
    private bool _hasRedirected = false;

    private void RedirectToHolidayViewer()
    {
        if (_hasRedirected) return;
        _hasRedirected = true;
        Navigation.NavigateTo("/Holidays");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:27:00