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

时间:2019-01-15 08:15:14

标签: c# asp.net-core-mvc asp.net-identity asp.net-core-2.2

asp.net core 2.2身份是通过

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

登录设置为“ /身份/帐户/登录”:

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并将其重定向到HomeController-> IndexAction,以禁用注册

1 个答案:

答案 0 :(得分:2)

如果有人在答案中搜索asp.net core mvc 2.2:

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

您必须脚手架要修改的页面。

  1. 右键单击项目
  2. 添加->新的脚手架项目(如果已禁用,请停止调试/运行)
  3. 在左侧选择“身份”,然后单击“添加”
  4. 选择布局页面(〜/ Views / Shared / _Layoutcshtml)以获取正确的布局
  5. 选择要覆盖的页面,例如帐户\注册
  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

其他信息:

如果有任何[MSFT]正在阅读此书:如果您可以通过Startup.cs禁用注册或更改重定向路由而无需使用脚手架,那就太好了(这将使您无需更新包即可曾经曾经使用过x版的用户界面。