从 ASP.NET/Blazor 服务器中的当前经过身份验证的用户获取数据

Posted

技术标签:

【中文标题】从 ASP.NET/Blazor 服务器中的当前经过身份验证的用户获取数据【英文标题】:Get data from the current authenticated user in ASP.NET/Blazor Server 【发布时间】:2022-01-04 09:06:45 【问题描述】:

我有这个 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】:

我目前也在使用相同类型的系统。这是我从经过身份验证的用户那里获取“Ap​​plicationUser”信息的方法。 首先,我有这个功能。

        [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);

        

此函数返回当前经过身份验证的用户的 ID。 现在,在我的项目中,我有一个UserService 设置。所以我可以轻松调用:

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

哪一点我可以访问有关当前登录用户的所有信息。

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

我不确定你的项目是如何设置的,但我认为它通常也看起来像这样。如果您有任何问题,尽管问!

【讨论】:

以上是关于从 ASP.NET/Blazor 服务器中的当前经过身份验证的用户获取数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 跨服务器操作

mac 当前位置打开终端

从服务器获取当前日期时间并将其转换为 c# 中的本地时间

从 WCF 服务如何以当前用户而不是 IIS\DefaultApppool 的身份调用第三方 dll 中的方法

何时合并发生在Spark中的用户定义聚合函数UDAF中

Python在自动化运维时经常会用到的方法