_ManageNav не работает после добавления моего собственного класса Identity - PullRequest
0 голосов
/ 10 апреля 2019

Я использовал Identity в .NET Core 2.1.Приложение MVC и у меня есть одна проблема.Пока я использовал встроенный класс IdentityUser, мой _ManageNav работает хорошо: когда я нажимал на UserName, в левой части моего приложения я видел меню ManageNav.Но я должен указать свой собственный класс, потому что у меня должен быть список для пользователей:

public class MyAppUser : IdentityUser
{
    public ICollection<Recipe> Recipes { get; set; }
}

Конечно, я изменяю при запуске информацию о классе:

services.AddIdentity<MyAppUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

Также добавляю отправителя почты,потому что у меня была ошибка с этим:

services.AddTransient<IEmailSender, MyAppMailSender>();

Мой _ManaveNav практически встроен, мне не нужно было ничего менять, потому что сначала я хотел настроить свой собственный класс, это мой _ManageNav:

@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>

Я пытался с IdentityUser или MyAppUser в первой строке (@inject), но всегда у меня есть меню по умолчанию, которое у меня обычно в приложении.Макет моей личности:

@{
Layout = "/Areas/Identity/Pages/_Layout.cshtml"; }

<h2>Manage your account</h2>
<partial name="_MenuTop" />
<div class="all">

    <partial name="_ManageNav" />
    <div class="content">
        @RenderBody()
    </div>
    <partial name="_MenuRight" />
    <div class="clearfix"></div>
</div>
@section Scripts {
    @RenderSection("Scripts", required: false)
}

Может быть, у кого-то из вас есть эта проблема в вашем приложении?Я думаю, что с ManageNav и Layout все в порядке, потому что в версии, где я использую IdentityUser, ManageNav прекрасно работает.

С уважением, Камиль

1 Ответ

0 голосов
/ 10 апреля 2019

Полагаю, вам следует использовать свой собственный класс здесь:

@inject SignInManager<MyAppUser> SignInManager

вместо:

@inject SignInManager<IdentityUser> SignInManager
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...