我试图在不添加角色的情况下了解其工作原理,但也许不会。我正在跟微软的教程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();
}
答案 0 :(得分:0)
是否可以通过自定义表向他们显示已登录用户的数据?
他们正在将OwnerId设置为管理员角色ID
在下面的AspNetUsers
表中,用户的Id
是主键。要实现AspNetUsers
和Employee
之间的一对一关系,您可以将相应的AspNetUsers.Id
存储在特定员工的OwnerId
中,然后可以基于检索到的详细员工信息用户ID。
我想我需要将电子邮件与电子邮件进行比较?
如果您将电子邮件信息同时保存在AspNetUsers
和Employee
表中,则可以通过比较您提到的电子邮件来获取相应的员工信息。
//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
,则用户可能会收到重复的电子邮件。