如何显示已登录的用户信息?

时间:2020-08-23 22:17:24

标签: asp.net-core razor asp.net-identity

我试图在不添加角色的情况下了解其工作原理,但也许不会。我正在跟微软的教程about protecting user data with Authorize一起学习,但是如果没有角色,我仍然很难理解。

在我的数据库中,我有AspNet身份表和一些自定义表。是否可以通过自定义表向他们显示已登录用户的数据?我在这里看过,但可能不是在寻找正确的东西。

我尝试从上下文中获取用户电子邮件,并检查userManager中是否存在该电子邮件,然后将其推送到列表中,但只会返回null。

public async Task OnGetAsync()
        {
            var employee = from e in Context.EmpInfo
                select e;
           
            var currentUserId = UserManager.GetUserId(User);

            employee = employee.Where(e =>e.OwnerId == currentUserId);
            
            EmpInfo = await employee.ToListAsync();
        }

1 个答案:

答案 0 :(得分:0)

是否可以通过自定义表向他们显示已登录用户的数据?

他们正在将OwnerId设置为管理员角色ID

在下面的AspNetUsers表中,用户的Id是主键。要实现AspNetUsersEmployee之间的一对一关系,您可以将相应的AspNetUsers.Id存储在特定员工的OwnerId中,然后可以基于检索到的详细员工信息用户ID。

enter image description here

我想我需要将电子邮件与电子邮件进行比较?

如果您将电子邮件信息同时保存在AspNetUsersEmployee表中,则可以通过比较您提到的电子邮件来获取相应的员工信息。

//find user and get user's email
var user = await _userManager.GetUserAsync(User);
var user_email = user?.Email.ToString();

//...
//query employee table with retrieved user_email 
//code logic here...

此外,请注意,如果您未在ASP.NET Core Identity系统中配置RequireUniqueEmail,则用户可能会收到重复的电子邮件。