添加我自己的Identity类后,_ManageNav不起作用

时间:2019-04-10 16:59:49

标签: c# .net-core identity

我在.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)

1 个答案:

答案 0 :(得分:0)

我认为,您应该在此处使用自定义类:

@inject SignInManager<MyAppUser> SignInManager

而不是:

@inject SignInManager<IdentityUser> SignInManager