获取登录用户的身份?

问题描述 投票:0回答:0

用于 Blazor(服务器端)应用程序。据我了解,我有一个登录用户的三个对象:

  • AuthenticationState,我可以在它被注入时进入我的剃须刀页面。这让我可以打电话看看声明是否允许用户采取行动或查看数据。
  • IdentityUser 这是 ASP.NET Identity 用户,它有他们的电子邮件、电话等。我可以使用下面的代码获得它。
  • User 这是我的应用程序用户对象。 User.AspUserId == IdentityUser.Id 这样我就可以在拥有 IdentityUser 后读取该对象。
    private async Task<IdentityUser?> GetUser()
      {
      var userPrincipal = (await authenticationStateTask).User;
      var userid = userPrincipal.FindFirst(u => u.Type.Contains("nameidentifier"))?.Value;
      if (!string.IsNullOrEmpty(userid))
        return await UserDbContext.Users.FirstOrDefaultAsync(u => u.Id == userid);
      return null;
      }

我的问题是:

  1. 这三个对象是我应该使用的吗?
  2. 有一个 AuthenticationStateProvider.AuthenticationStateChanged 事件。我是否应该设置它并使用它来重新读取我的 IdentityUser 和 User 对象,否则我可以保留这些对象而无需每页重新读取它们。
  3. 如果是这样,我应该在哪里存储这些对象,因为它们是每个会话对象。
  4. 我的 GetUser() 代码是获取 IdentityUser 的最佳方式吗?

我在这一切中遗漏了什么吗?

asp.net-identity blazor-server-side
© www.soinside.com 2019 - 2024. All rights reserved.