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

ASP.NET Core MVC如何禁用Identity默认生成的Identity/Account/Register访问路径

解决方案

你可以根据你的项目实际情况选择以下任意一种方案解决重复路径问题:


方法1:重定向Identity自带页面路由(适合已生成Identity脚手架页面的场景)

  • 找到项目下Areas/Identity/Pages/Account/路径下你要禁用的页面对应的.cshtml.cs文件,比如Register.cshtml.cs、Login.cshtml.cs
  • 修改页面的OnGet和OnPost处理方法,直接重定向到你自己编写的AccountController对应接口即可,示例代码如下:
// Register.cshtml.cs
public IActionResult OnGet()
{
    return RedirectToAction("Register", "Account");
}

public IActionResult OnPostAsync()
{
    return RedirectToAction("Register", "Account");
}
  • 该方法操作简单,用户访问旧路径会自动跳转到你设置的新路径,不会出现404错误。

方法2:通过URL重写中间件全局拦截(适合未生成Identity脚手架页面的场景)

  • 在Program.cs中配置URL重写中间件,将所有Identity/Account开头的请求重定向到你自定义的Account路径下,示例代码如下:
// 该配置需要放在app.UseRouting()之前
var rewriteOptions = new RewriteOptions()
    .AddRedirect("^Identity/Account/Login(.*)", "Account/Login$1")
    .AddRedirect("^Identity/Account/Register(.*)", "Account/Register$1")
    // 其他需要禁用的Identity页面可以继续补充重定向规则
    ;
app.UseRewriter(rewriteOptions);
  • 无需修改Identity相关代码,全局生效。

方法3:从根源移除Identity自带Razor页面(适合完全不需要Identity内置页面的场景)

  • 如果你只需要使用Identity的核心身份验证、用户管理能力,完全不需要它自带的页面功能,可以将Program.cs中的AddDefaultIdentity替换为AddIdentityCore,从根源上关闭Identity Razor页面的路由注册,示例代码如下:
// 替换原来的AddDefaultIdentity配置
builder.Services.AddIdentityCore<IdentityUser>(options =>
{
    options.SignIn.RequireConfirmedAccount = true;
    // 其他Identity配置保持和之前一致
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddSignInManager()
.AddDefaultTokenProviders();
  • 该方法不会生成任何Identity相关的页面路由,完全不会出现重复路径的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:15:03