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

.NET6 MVC中如何正确将未认证用户路由至登录页面

解决未认证用户跳转Identity登录页的问题

首先要明确:Identity的登录页面是Razor Page,不是MVC视图,所以你用return View()跳转的方式本身就不对,应该用RedirectToPage方法来处理Area内的Page跳转。

正确的跳转写法

把你代码里的else分支改成:

return RedirectToPage("/Account/Login", new { area = "Identity" });

或者用完整的Page路径写法:

return RedirectToPage("/Areas/Identity/Pages/Account/Login");

更规范的实现方式

其实不需要手动写认证判断逻辑,直接给控制器或目标Action加上[Authorize]特性,ASP.NET会自动拦截未认证请求并跳转到登录页,代码更简洁规范:

using Microsoft.AspNetCore.Authorization;

namespace ContactPro.Controllers
{
    [Authorize]
    public class ContactsController : Controller
    {
        private readonly ApplicationDbContext _context;

        public ContactsController(ApplicationDbContext context)
        {
            _context = context;
        }

        public async Task<IActionResult> Index()
        {
            return View(await _context.Contacts.ToListAsync());
        }
    }
}

你之前路径错误的原因

  1. 混用加载方式:MVC视图和Razor Page是两种不同的文件类型,return View()是用来加载MVC视图文件的,不能用来加载Razor Page。
  2. 路径层级错误:默认Identity登录页的位置是Areas/Identity/Pages/Account/Login.cshtml,并不在Manage文件夹下,你之前的路径多了不必要的Manage层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:31:05