Войдите в систему под именем пользователя в представлении в ASP.NET Core - PullRequest
0 голосов
/ 03 марта 2019

У меня есть кнопка Log Out в моем _layout.cshtml.Я хотел бы показать имя пользователя, вошедшего в систему, внутри кнопки выхода из системы, чтобы увидеть, кто вошел в систему в данный момент.

<a class="btn btn-sm" asp-action="" asp-controller="">Log Out( @ViewBag.LoggedInUserName )</a>

В моем контроллере я использовал:

ViewBag.LoggedInUserName = userManager.GetUserName(HttpContext.User); 

Таким образом, мне нужно объявить ViewBag каждый метод в каждом контроллере.Я уверен, что есть другой способ сделать это.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Вам не нужно передавать его из метода контроллера, используя ViewBag.Вы можете просто сделать следующее:

@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

<a class="btn btn-sm" asp-action="" asp-controller="">Log Out(@UserManager.GetUserName(User))</a>

Примечание: Если вы расширяете IdentityUser чем-то вроде ApplicationUser, тогда замените IdentityUser на ApplicationUser следующим образом:

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
0 голосов
/ 03 марта 2019

Создайте PartialView и поместите его в общий _layout.cshtml.

<partial name="_LoginPartial" />

А в PartialView вы можете добавить нечто похожее на следующий код:

@using Microsoft.AspNetCore.Identity

@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

@if (SignInManager.IsSignedIn(User))
{
    <form asp-area="Identity" asp-page="/Account/Logout" asp-route 
        returnUrl="@Url.Action("Index", "Home", new { area = "" })" method="post" 
        id="logoutForm" class="navbar-right">
        <ul class="nav navbar-nav navbar-right">
            <li>
                <a asp-area="Identity" asp-page="/Account/Manage/Index" 
                 title="Manage">Hello @UserManager.GetUserName(User)!</a>
            </li>
            <li>
                <button type="submit" class="btn btn-link navbar-btn navbar- 
                    link">Logout</button>
            </li>
        </ul>
    </form>
}
else
{
    <ul class="nav navbar-nav navbar-right">
        <li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
    </ul>
}

Надеюсь, это поможет.

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