0

希望有人可以在这里帮助我。我是 ASP、MVC 和 C# 的新手,但我正在尝试构建一个 Web 应用程序来学习它。我已经创建了为用户创建所有控制器、视图等的默认应用程序,并且一切正常。

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

这可能有点厚颜无耻,但如果有人有一个基本示例来说明如何从类中检索用户 ID 之类的东西,我可能会向后工作并理解发生了什么。一直在网上搜索几个小时,但找不到任何有效的例子。

使用 VS 2015 Asp Core Net RC2

谢谢

4

2 回答 2

2

用户 id 存在于HttpContext. 身份只是添加了助手,但您仍然需要HttpContext实例,您不会在控制器之外拥有它。这似乎是 XY 问题的一个典型例子,你在问如何以某种方式解决问题,而不是问如何解决问题本身。一般来说,如果您需要控制器之外的用户 id,您应该简单地将文字用户 id 从控制器传递到您正在调用的任何内容,而不是尝试从那里检索它。

于 2016-11-14T20:40:07.007 回答
0

这对我有用

查看本文的内部服务部分,了解如何获取HttpContextAccessor的实例(例如_httpContextAccessor

然后你可以像这样得到用户ID:

long userId = ClaimsPrincipalExtensions.GetUserId(_httpContextAccessor.HttpContext.User);

假设您已经编写了方法ClaimsPrincipalExtensions.GetUserId,如果没有,只需检查this

于 2018-08-11T14:38:27.587 回答