#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;
Я не уверен, как настроен ваш проект, но я думаю, что обычно он также выглядит так. Если у вас есть какие-либо вопросы, просто спросите!