Получить данные от текущего аутентифицированного пользователя в ASP.NET/Blazor Сервер

#c# #asp.net-core #asp.net-identity #blazor-server-side

Вопрос:

У меня есть этот класс ApplicationUser

 using Microsoft.AspNetCore.Identity;

namespace BbcSrUI.Data.Models
{
    public class ApplicationUser : IdentityUser
    {
        public int BrandId { get; set; }
        public bool EnableNewCall { get; set; }
        public bool EnableNewEvent { get; set; }
        public bool EnableCalls { get; set; }
        public bool EnableEvents { get; set; }
    }
}
 

Я хочу получить доступ к данным brandId аутентифицированного пользователя на странице индекса.

Ответ №1:

В настоящее время я также работаю с такой же системой. Это мой подход к получению информации «Пользователь приложения» от аутентифицированного пользователя. Для начала у меня есть эта функция.

         [CascadingParameter]
        private Task<AuthenticationState> authenticationStateTask { get; set; }
        [CascadingParameter]
        public AuthenticationState AuthenticationState { get; set; }

        public async Task<Guid> GetUserId()
        {
            AuthenticationState = await authenticationStateTask;

            string Id =
            AuthenticationState.User.FindFirstValue(ClaimTypes.NameIdentifier);

            return Guid.Parse(Id);

        }
 

Эта функция возвращает идентификатор текущего пользователя, прошедшего проверку подлинности.
Теперь, в моем проекте, у меня есть UserService настройка. Так что я могу легко позвонить:

 ApplicationUser user = await userService.GetUserByIdAsync(await GetUserID);
 

В этот момент у меня был доступ ко всей информации о текущем вошедшем в систему пользователе.

 AuthorName = user.FullName;
AuthorPhone = user.PhoneNumber;
AuthorEmail = user.Email;
 

Я не уверен, как настроен ваш проект, но я думаю, что обычно он также выглядит так. Если у вас есть какие-либо вопросы, просто спросите!