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

使用AspNetCore Identity实现Blazor登录后跳转至指定页面

.NET 8 Blazor Web App 登录后默认跳转到 Dashboard 的简单实现

方法1:修改登录链接,直接传递 returnUrl

在营销页面布局里,给登录链接带上returnUrl参数,直接指定跳转目标:

  • 使用自带LoginDisplay组件时,通过参数传递:
<LoginDisplay ReturnUrl="/dashboard" />
  • 自定义登录链接(如NavLink或普通链接):
<a href="Identity/Account/Login?returnUrl=/dashboard">登录</a>

这是最直接的方式,点击登录时就明确告知系统跳转地址。

方法2:修改登录页面,设置默认跳转地址

如果希望无论是否传入returnUrl,登录后都默认跳转到dashboard,可以修改脚手架生成的Login.razor页面(路径通常为Components/Account/Pages/Login.razor):

  1. 在组件中添加参数处理逻辑,默认赋值:
[SupplyParameterFromQuery]
public string? ReturnUrl { get; set; } = "/dashboard";
  1. 或在登录提交方法中补全默认值:
private async Task HandleSubmitAsync()
{
    // 原有登录逻辑...
    if (string.IsNullOrEmpty(ReturnUrl))
    {
        ReturnUrl = "/dashboard";
    }
    // 后续跳转逻辑会自动使用该ReturnUrl
}

方法3:全局配置认证跳转规则

在Program.cs中配置Cookie认证时,通过事件统一设置默认跳转地址:

builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
    options.Events.OnRedirectToLogin = context =>
    {
        // 未指定ReturnUrl时,默认跳转到dashboard
        if (string.IsNullOrEmpty(context.RedirectUri))
        {
            context.RedirectUri = "/dashboard";
        }
        return Task.CompletedTask;
    };
});

注:此方法会覆盖所有登录跳转场景,若需区分营销页和用户门户的跳转逻辑,可通过context.Request.Path做条件判断。

关于之前方法失效的原因

  • appsettings.json无内置returnUrl配置项,手动设置不会被系统读取;
  • 直接在Program.cs中指定返回URL的方式不符合Blazor认证的逻辑规范;
  • AuthorizeView的方式属于手动处理跳转,未利用内置的认证参数传递机制,因此显得繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:28:10