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

.NET Core 6修改登录ReturnUrl:找不到Login.cshtml.cs及OnPostAsync怎么办

修改.NET Core 6 Identity登录后的ReturnUrl步骤

1. 生成Identity登录页面文件

默认启用Individual User Account时,Identity的核心页面封装在Razor类库中,项目内看不到Login.cshtml.cs文件。需要先将登录页面 scaffolding 到本地项目:

在项目根目录打开终端,执行以下命令(替换YourDbContextName为项目实际使用的DbContext类名,比如ApplicationDbContext):

dotnet aspnet-codegenerator identity -dc YourDbContextName --files Account.Login

执行完成后,你会在Areas/Identity/Pages/Account目录下看到Login.cshtml和Login.cshtml.cs文件。

2. 修改登录成功后的跳转逻辑

打开Login.cshtml.cs,找到OnPostAsync方法,定位到登录成功后的跳转代码段,将默认的ReturnUrl替换为你的指定URL:

原跳转逻辑示例:

if (result.Succeeded)
{
    _logger.LogInformation("User logged in.");
    return LocalRedirect(returnUrl);
}

修改为指定跳转目标(示例为Home控制器的Index页面):

if (result.Succeeded)
{
    _logger.LogInformation("User logged in.");
    // 跳转到Home/Index页面
    return RedirectToAction("Index", "Home");
    // 如果目标是Razor Page,使用:return RedirectToPage("/Index", new { area = "" });
}

3. 可选:修改登录链接的默认ReturnUrl参数

如果希望用户点击登录按钮时就携带指定的ReturnUrl,打开_LoginPartial.cshtml,修改Login链接代码:

原代码:

<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>

修改为:

<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login" asp-route-returnUrl="@Url.Action("Index", "Home")">Login</a>

这样用户点击登录链接后,URL会自动带上returnUrl=/Home/Index参数,登录成功后将跳转至该页面(若未在后台强制替换跳转目标)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:20:09