ASP.NET Core MVC 更改默认的 Identity 区域路由

4

asp.net core 2.2身份验证是通过以下方式添加的

services.AddIdentity<ApplicationUser, ApplicationRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders()
        .AddDefaultUI();  

登录页面的地址被设置为"/Identity/Account/Login":
options.LoginPath = "/Identity/Account/Login";

现在我该如何更改通过Startup.cs添加的身份验证区域的路由,以便我可以执行以下操作:

https://www.example.com/admin ,而不是https://www.example.com/identity/account/login

或者

https://www.example.com/register ,使其转到HomeController->RegisterAction。这将允许我捕获并重定向HomeController->RegisterAction以禁用注册。


这个问题已经在这里得到了回答:https://dev59.com/zFUL5IYBdhLWcg3wM1vy。虽然它是针对.NET Core 2.1确认的,但也应该适用于2.2。 - Soumen Mukherjee
1个回答

4

如果有人在寻找asp.net core mvc 2.2的答案:

当你调用DefaultUI时,你没有任何特定的页面或控制器可以修改。

你需要搭建你想要修改的页面。

  1. 右键单击项目
  2. 添加-->新的搭建项(如果禁用了,请停止调试/运行)
  3. 在左侧选择Identity并点击添加
  4. 选择你的布局页面(~/Views/Shared/_Layoutcshtml)以获得正确的布局
  5. 选择你想要覆盖的页面,例如Account\Register
  6. 选择你的数据上下文类(或通过点击[+]创建一个新类)
  7. 点击添加

现在你会在/Areas/Identity/Pages/Account/Register.cshtml中看到

展开Register.cshtml并打开文件Register.cshtml.cs。(代码后台)

现在,如果你想禁用注册,你可以替换

public void OnGet(string returnUrl = null)
{
  ReturnUrl = returnUrl;
}

使用:

public IActionResult OnGet(string returnUrl = null) => RedirectToPage("/Account/Login"); // disable registrations

补充信息:

如果有微软员工看到这条消息:让注册能够被禁用或更改重定向路由的Startup.cs会非常棒,而无需使用脚手架(这将允许您在不使用旧版本UI的情况下更新软件包)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接