如何查看用户登录的额外信息?

时间:2014-04-22 14:07:30

标签: login asp.net-mvc-5 simplemembership

我有一个与Company表相关的User表,它们之间的关系分别为多对一。用户表很快就有了CompanyID。

当用户登录时,我需要不断检查公司ID是什么,但是使用User.Identity我只能访问该名称。

从登录用户获取CompanyID的最佳方法是什么?

我目前正在使用简单会员资格。

1 个答案:

答案 0 :(得分:1)

身份不是来自数据库,所以它不会拥有所有信息。好消息是,通过ID,您可以轻松找到用户的完整记录。使用UserManager<TUser>.FindByIdAsync()并将结果提供给User.Identity.GetUserId()。如果你愿意,也有一个FindByNameAsync()方法。

编辑:这篇文章最初标记为ASP.NET Identity,因此我认为您使用的是使用UserManager类的ASP.NET Identity。在这种情况下,您可能没有GetUserId()。无论如何,原则是相同的,即使你想在这里的评论中说,从User.Identity访问的东西。写一个使用您的数据库的IIdentity的扩展方法,并在users表中搜索用户名与您拥有的用户名匹配的用户。可能看起来像这样:

public static int GetCompanyId(this IIdentity identity)
  {
    using (var context = new ApplicationDbContext())
      {
        return context.Users.Single(u => u.UserName == identity.GetUserName()).CompanyId;
      }
  }

然后,您可以使用User.Identity.GetCompanyId()调用此方法。