2016-11-14 48 views
0

希望有人能帮助我。我是ASP,MVC和C#的新手,但试图构建一个Web应用程序来学习它。我创建了默认的应用程序,为用户创建所有的控制器,视图等,并且一切正常。如何从非控制器类中的Microsoft.AspNetCore.Identity获取用户标识

我现在已经创建了一个类,并在该类内部,我需要获取登录用户的用户名或用户名。我已经尝试将UserManager和SignInManager注入到类的构造函数中,但随后调用该调用的任何控制器都抱怨说我没有传入所需的参数。

这可能很厚道,但如果有人有一个基本的例子来说明如何从类内部获取像userID这样的东西,我可能会后退工作并理解正在发生的事情。一直在线寻找小时,但找不到任何可行的例子。

使用VS 2015年天冬氨酸核心网RC2

感谢

+0

尝试在控制器中使用'this.User' –

回答

2

HttpContext存在的用户ID。身份只是添加助手,但您仍然需要HttpContext实例,您不会在控制器之外使用该实例。这似乎是一个XY问题的典型例子,在这个问题中,你问如何以某种方式来解决问题,而你以某种方式决定接近问题而不是问如何解决问题本身。一般来说,如果你需要控制器以外的用户ID,你应该简单地将控制器中的文字用户标识传递给你调用的任何东西,而不是试图从那里检索它。

+0

谢谢克里斯。你可能是对的,因为我可能会采取错误的方法来解决问题。对我而言,这是学习过程的一部分。基本上,我需要访问从两个不同控制器调用的类中的userId或UserName。 我现在已经尝试使用userManager.GetUserAsync(HttpContext.User).Id获取ID并将其传入类中,但我现在在GetUserAsync(HttpContext.User)中获取空对象引用,将UserManager注入到这些控制器中。 。 –

+0

获取用户ID的方法是User.Identity.GetUserId(),它需要'Microsoft.AspNet.Identity'命名空间。如果您为Identity用户定制了主键,那么您需要使用该用户的通用版本,即'User.Identity.GetUserId ()',其中'T'是主键的类型。 –

+1

如果我使用Microsoft.AspNetCore.Identity会怎么样?在这种情况下GetUserID()不存在。 –

相关问题