【发布时间】:2017-01-03 16:57:57
【问题描述】:
我遇到了以下代码,我正在尝试弄清楚它的作用。
if (principal.Identity is WindowsIdentity)
{
profile = //generate a profile somehow
}
....
var userId = principal.Identity.GetUserId<int>();
这是我(认为)我理解的:
principal
是当前登录的用户
这一行:
if (principal.Identity is WindowsIdentity)
检查当前登录的用户是否是 windows 用户,例如通过 windows auth 登录
这条线是我遇到问题的线。
var userId = principal.Identity.GetUserId<int>();
如果我们从这里假设所有用户都是 windows 用户,那么这一行似乎正在获取用户 ID。
我不确定的部分是获取 Windows 用户 ID 还是在我的应用程序中分配的用户 ID? windows用户还有userID吗?
我的问题是它总是返回 0,我不知道为什么?
如果它与应用程序中的用户 ID 有关,我认为这需要映射或分配到某个地方,但我还是看不到如何。
我大部分时间都在处理这个问题,但是我在谷歌上搜索了所有的东西,但我无法取得任何进展......
【问题讨论】:
-
这将返回您的应用程序创建的用户 ID
-
嗨,我认为它总是返回 0,因为它代表身份提供者的表 aspnet 用户的 id
-
如果你 tra 检索 User.GetUserName() 会怎样
-
.GetUserId<int>()方法并没有完全实现,它可能是一个扩展方法。你需要看看它在哪里实现,看看它做了什么。 -
@federicoscamuzzi 它将返回 Windows 用户名