Как использовать пользовательские данные в Layout в Asp.Net Core? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть сайт, написанный на Asp.Net Core, и я хочу использовать дополнительные данные, относящиеся к зарегистрированному пользователю. Таким образом, каждый раз, когда пользователь открывает страницу, эти данные загружаются. Проблема в том, что мне нужны эти данные в _Layout.cshtml, поэтому я не могу использовать контроллер и не могу использовать код, подобный этому:

@{
    var user = await UserManager.GetUserAsync(User);
    var data = await repository.LoadDataAsync(User?.Id);
    //Data usage...
}

Потому что он будет вызываться каждый раз, когда пользователь открывает страницу с этим макетом. Я чувствую, что должно быть простое решение, но я не смог его найти. Наверное, мне стоит использовать кеш?

1 Ответ

1 голос
/ 14 мая 2019

Это не должно быть сложно.

Вы можете добавить UserManager<TUser> на страницу и использовать, как показано ниже.

@inject UserManager<TheUser> userManager;

Но вы хотите быть уверены, что пользователь на самом делевошли в систему, прежде чем пытаться что-либо сделать.

Итак, вы также можете добавить страницу с помощью SignInManager<TUser>.

@inject SignInManager<TheUser> signInManager;

@

    {
    var user=await userManager.FindByNameAsync(User.Identity.Name);
    }
    if(user!=null && await signInManager.IsSignedInAsync(user)){
    //Do other stuffs with the user.
    }

Обратите внимание, что свойство User:

Получает ClaimsPrincipal для пользователя, связанного с выполняемым действием.

И он доступен через Microsoft.AspNetCore.Mvc Полагаю.

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