ASP.NET MVC中如何通过路由访问/login跳转至登录页(含Identity Area)
实现根路径/login指向Identity登录页的路由配置
要让网站根路径下的/login直接跳转到Identity独立Area的登录页,在ASP.NET Core MVC中可以通过以下两种方式配置路由:
方法一:添加直接路由映射
在Startup.cs的Configure方法里,把自定义的/login路由规则放在默认路由之前(路由匹配按顺序执行,优先级更高),直接将请求指向Identity区域的Account控制器Login动作:
app.UseEndpoints(endpoints => { // 配置/login路由,直接映射到Identity的登录页 endpoints.MapControllerRoute( name: "login-shortcut", pattern: "login", defaults: new { area = "Identity", controller = "Account", action = "Login" } ); // 保留原有默认路由 endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}" ); // 不要移除Identity的Razor Pages路由 endpoints.MapRazorPages(); });
方法二:配置路由重定向(可选)
如果希望浏览器地址栏显示完整的Identity登录页路径(即触发重定向),可以用这种方式:
app.UseEndpoints(endpoints => { // 当访问/login时,重定向到Identity的登录页 endpoints.MapGet("/login", context => { context.Response.Redirect("/Identity/Account/Login"); return Task.CompletedTask; }); // 其他原有路由配置 endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}" ); endpoints.MapRazorPages(); });
关键注意点
- 确保Identity的Area路由正常工作:默认ASP.NET Core Identity的Razor Pages已经自带Area配置,无需修改
IdentityHostingStartup.cs。 - 如果你的Identity登录页的控制器/动作不是默认的
Account/Login,记得同步修改路由里的controller和action参数。 - 路由顺序不能乱:自定义的/login路由必须放在默认路由前面,否则会被默认路由的规则拦截。
内容的提问来源于stack exchange,提问作者Lenny
相关产品推荐
相关产品推荐

