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

ASP.NET Core 7匿名控制器方法重定向Account/Login视图异常问题

ASP.NET Core 登录状态判断重定向问题解决

1. 先解决代码里的死代码问题

你的else块里写了一堆return语句,但程序执行到第一个return RedirectToAction("Login", "Account");就会直接终止方法执行,后面的所有重定向代码完全不会被运行——这就是你测试多种写法都没效果的核心原因,因为那些写法根本没被执行过。

2. 正确指定Identity区域的重定向路径

ASP.NET Core Identity的Account控制器默认是放在Identity区域下的,手动重定向时必须明确指定区域参数,否则MVC会在根区域找Account控制器,自然找不到对应页面。

修正后的完整Index方法

public IActionResult Index()
{
    if (_userManager.IsSignedIn(User))
    {
        return RedirectToAction("MyDetails", "SupAdmin");
    }
    else
    {
        // 正确指向Identity区域的Account/Login
        return RedirectToAction("Login", "Account", new { area = "Identity" });
    }
}

3. 检查路由配置是否正确

如果还是无法跳转,确认你的Program.cs(或旧版的Startup.cs)里配置了区域路由支持:

// 启用Razor Pages路由(Identity依赖这个)
app.MapRazorPages();

// 配置MVC区域路由
app.MapControllerRoute(
    name: "areas",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

// 默认根路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

4. 为什么加[Authorize]就能正常跳转?

当你给方法加上[Authorize]属性时,ASP.NET Core的授权中间件会自动读取Identity配置中的默认登录路径(默认就是/Identity/Account/Login),并自动处理区域和路径的匹配,不需要你手动写重定向,所以能正常跳转到登录页。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:52:35