我在.NET Core 2.1中使用了身份。 MVC应用程序,我有一个问题。只要我使用内置类IdentityUser,我的_ManageNav就能正常工作:当我单击UserName时,在应用程序的左侧,我看到了ManageNav菜单。但是我必须隐含自己的课程,因为我必须有用户列表:
T
我当然会更改有关类的启动信息:
public class MyAppUser : IdentityUser
{
public ICollection<Recipe> Recipes { get; set; }
}
还添加一个邮件发件人,因为我对此有误:
services.AddIdentity<MyAppUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
我的_ManaveNav实际上是内置的,我不需要进行任何更改,因为首先我要配置自己的类,这是我的_ManageNav:
services.AddTransient<IEmailSender, MyAppMailSender>();
我在第一行(@inject)中尝试了IdentityUser或MyAppUser,但始终有默认菜单,在应用程序中具有正常菜单。我的身份布局:
@inject SignInManager<IdentityUser> SignInManager
@{
var hasExternalLogins = (await SignInManager.GetExternalAuthenticationSchemesAsync()).Any();
}
<div class="menu-left">
<ul class="nav nav-pills nav-stacked">
<li class="@ManageNavPages.IndexNavClass(ViewContext)"><a asp-page="./Index">Profile</a></li>
<li class="@ManageNavPages.ChangePasswordNavClass(ViewContext)"><a id="change-password" asp-page="./ChangePassword">Password</a></li>
@if (hasExternalLogins)
{
<li class="@ManageNavPages.ExternalLoginsNavClass(ViewContext)"><a id="external-login" asp-page="./ExternalLogins">External logins</a></li>
}
<li class="@ManageNavPages.TwoFactorAuthenticationNavClass(ViewContext)"><a asp-page="./TwoFactorAuthentication">Two-factor authentication</a></li>
<li class="@ManageNavPages.PersonalDataNavClass(ViewContext)"><a asp-page="./PersonalData">Personal data</a></li>
</ul>
</div>
也许其中一个在您的应用程序中遇到此问题?我认为ManageNav和Layout可以,因为在使用IdentityUser的版本中ManageNav很好用。
最好的问候, 卡米尔(Kamil)
答案 0 :(得分:0)
我认为,您应该在此处使用自定义类:
@inject SignInManager<MyAppUser> SignInManager
而不是:
@inject SignInManager<IdentityUser> SignInManager