ASP.NET Core 6.0 MVC搭建Identity页面后无注册登录链接问题
解决ASP.NET Core 6.0 MVC中Identity登录/注册链接不显示的问题
1. 补充Program.cs中的路由映射配置
你的现有代码缺少Identity Razor页面的路由映射,这是Identity页面无法被访问、导航链接无法生成的核心原因之一。需要在MVC默认路由配置后添加MapRazorPages():
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<DbContext>(); var app = builder.Build(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // 添加该行,映射Identity的Razor页面路由 app.MapRazorPages();
2. 在MVC布局页中添加登录/注册导航链接
默认MVC项目的布局页(Views/Shared/_Layout.cshtml)不会自动包含Identity的导航入口,需要手动在导航区域添加以下代码(示例嵌入到navbar的列表中):
<ul class="navbar-nav"> @if (User.Identity.IsAuthenticated) { <li class="nav-item"> <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index">Hello @User.Identity.Name!</a> </li> <li class="nav-item"> <form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home")"> <button type="submit" class="nav-link btn btn-link text-dark">Logout</button> </form> </li> } else { <li class="nav-item"> <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Register">Register</a> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a> </li> } </ul>
3. 确认Identity页面的目录结构
确保你的Register.cshtml、Login.cshtml等页面位于Areas/Identity/Pages/Account目录下,且页面顶部的@page指令无错误,示例:
@page @model RegisterModel @{ ViewData["Title"] = "Register"; }
完成以上操作后重新运行项目,首页导航栏即可显示登录/注册相关链接。
内容的提问来源于stack exchange,提问作者Massey
相关产品推荐
相关产品推荐

