Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Login 如何查看登录用户的额外信息?_Login_Asp.net Mvc 5_Simplemembership - Fatal编程技术网

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

Login 如何查看登录用户的额外信息?,login,asp.net-mvc-5,simplemembership,Login,Asp.net Mvc 5,Simplemembership,我有一个与公司表相关的用户表,它们之间的关系分别是多对一。很快,用户表就有了CompanyID 当一个用户登录时,我需要经常检查该公司给他识别了什么,但是使用user.Identity,我只能访问该名称 从登录用户处获取公司ID的最佳方法是什么 我目前使用的是简单会员身份。身份不是来自数据库,因此它不会包含所有信息。好消息是,通过ID,很容易找到用户的完整记录。使用UserManager.FindByIdAsync()并将User.Identity.GetUserId()的结果提供给它。如果需要

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

当一个用户登录时,我需要经常检查该公司给他识别了什么,但是使用user.Identity,我只能访问该名称

从登录用户处获取公司ID的最佳方法是什么


我目前使用的是简单会员身份。

身份不是来自数据库,因此它不会包含所有信息。好消息是,通过ID,很容易找到用户的完整记录。使用
UserManager.FindByIdAsync()
并将
User.Identity.GetUserId()的结果提供给它。如果需要,也有一个
FindByNameAsync()
方法

编辑:这篇文章最初被标记为ASP.NET Identity,所以我认为您使用的是ASP.NET Identity,它使用UserManager类。在这种情况下,您可能没有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()

调用此函数,我目前使用的是简单成员身份。我不能使用UserManager,它只有Equals和ReferenceEquals方法。如何馈送User.Identity.GetUserId()?最好的办法是这样?我想知道您是否有任何方法来执行User.Identity.CompanyID.@weldsonandrade您当时可能应该以不同的方式标记您的帖子,但请查看我的编辑。对不起,我只是更改了目标。谢谢