更改ASP.NETCoreIdentityUI中的路由?自ASP.NETCore2.1发布以来,我一直在使用新的IdentityUI包。对于新生成的MVC项目,这里有一些可用的页面URL:/Home/About/Home/Contact/Identity/Account/Login/Identity/Account/Register如何配置路由以从URL中删除/Identity/部分?看起来这还不可能。查看源代码,很明显区域名称是在IdentityDefaultUIConfigureOptions中硬编码的:privateconststringIdentityUIDefaultAreaName="Identity";这用于少数地方,包括配置Razor页面时。例如:options.Conventions.AuthorizeAreaFolder(IdentityUIDefaultAreaName,"/Account/Manage");以及配置Cookies身份验证时。例如:options.LoginPath=$"/{IdentityUIDefaultAreaName}/Account/Login";值得注意的是,IdentityDefaultUIConfigureOptions本身是受保护的,因此覆盖选项的能力似乎并不存在。我打开了一个Github问题,看看我们是否可以从参与项目本身的人那里得到反馈。2018-06-12更新来自ASP.NETCoreIdentity团队的JavierCalvarroNelson在我提出的Githubissue中提供了一些有价值的反馈,可以总结如下:IdentityUI在某个区域的主要原因是最大限度地减少对应用程序的影响,并在应用程序代码和身份代码之间提供清晰的分离。当想要自定义URL时,Javier建议使用以下选项之一:虽然不受支持且不推荐,但Javier还指出可以使用自定义IPageApplicationModelConvention来覆盖URL。但是,如果您错过了,则不支持也不推荐。更新2018-06-27官方文档现已更新,以更好地解释规定的URL更改。在您的startup.cs中,您可以更改:services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);与:services.AddMvc().AddRazorPagesOptions(o=>o.Conventions.AddAreaFolderRouteModelConvention("Identity","/Account/",model=>{foreach(varselectorinmodel.Selectors){varattributeRouteModel=selector.AttributeRouteModel;attributeRouteModel.Order=-1;attributeRouteModel.Template=attributeRouteModel.Template.Remove(0,"Identity".Length);}})).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);它将路由:/identity/account/login/account/login/identity/account/signup/account/signup等...要处理ReturnUrl,您可以创建一个新操作:[Route("Identity/Account/Login")]publicIActionResultLoginRedirect(stringReturnUrl){returnRedirect("/Account/Login?ReturnUrl="+ReturnUrl);}就路由而言,在webframework中是固定认证URL的标准,Django也是如此。以下是如何根据您的喜好自定义视图,因此我们告诉Identity不要包含他们的视图并提供我们的路径,而不是从路径中删除/Identity/。转到Startup.cs://使用较少默认值的方法////services.AddDefaultIdentity()//.AddEntityFrameworkStores();services.AddIdentity(options=>options.Stores.MaxLengthForKeys=128).AddEntityFrameworkStores().AddDefaultTokenProviders();////在默认路由下方添加一条路由//routes.MapRoute(name:"identity",template:"Identity/{controller=Account}/{action=Register}/{id?}");现在我们已经完成了除视图之外的所有设置,因此我们需要按照我们通常在mvc中执行的方式构建路径。建立一个帐户控制器。将Index()更改为Register()。在名为Account的视图中创建一个文件夹。添加文件Register.cshtml,这是原始html,根据需要自定义:Register?2018-SqlServerApp最简单的方法是将Pages文件夹拖出area/identity到主项目记住,@page指令(在.cshtml中)将导致视图可以直接访问“页面”下的任何内容(页面成为操作)如果您想更改默认/帐户/登录等页面,您也可以将帐户文件夹重命名为其他内容@页面directive也可以用来指定自定义路径,例如:@page"/Login"可以通过导航到/Login直接访问登录页面URL重写中间件可能是一种解决方法:以上是C#学习教程:在ASP中.NETCore在IdentityUI中更改路由?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——varoptions=newRewriteOptions().AddRewrite(@"^Account/(.*)","身份/账户/$1",skipRemainingRules:true);app.UseRewriter(选项);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
