DotNetNuke检索给定用户ID的用户信息

DotNetNuke检索给定用户ID的用户信息,dotnetnuke,dotnetnuke-module,Dotnetnuke,Dotnetnuke Module,dotnetnuke框架中有什么东西允许我向它传递一个userId,它将返回UserInfo对象,其中填充了该userId的详细信息 如果没有,通常的做法是什么?我相信DotNetNuke.Entities.Users.UserController有一个方法(GetUser)可以做到这一点,如果你也有一个门户ID。用户可以在门户之间共享,因此(显然)在用户能够正确填充UserInfo对象之前,需要了解您请求用户信息的门户 如果您只有一个用户ID而没有门户ID,我首先建议您看看是否也可以获得门户I

dotnetnuke框架中有什么东西允许我向它传递一个userId,它将返回UserInfo对象,其中填充了该userId的详细信息


如果没有,通常的做法是什么?

我相信DotNetNuke.Entities.Users.UserController有一个方法(GetUser)可以做到这一点,如果你也有一个门户ID。用户可以在门户之间共享,因此(显然)在用户能够正确填充UserInfo对象之前,需要了解您请求用户信息的门户

如果您只有一个用户ID而没有门户ID,我首先建议您看看是否也可以获得门户ID。如果没有,则需要转到数据库以获取所需内容。理想情况下,您将尽可能少地参与其中(因为数据库不是保证的API)。因此,如果您只是快速查询以获取用户的门户ID:

SELECT PortalID From {databaseOwner}{objectQualifier}UserPortals WHERE UserID = @userId

然后,您可以使用UserController.GetUser检索所需内容。

如果需要获取当前用户,则更简单:

Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo

请注意。

这不是返回用户ID问题出在哪里

Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo
response.write(nowUser)
试试这个(在DNN5.x中使用C#)

然后稍后使用用户信息

int UserID = _currentUser.UserID

我使用了bdukes发布的方式,但做了一个修改:PortalSettings可以获取PortalId:

DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUser(PortalSettings.PortalId, user_id, true);

为了获取当前用户,从7.3版开始,以上所有内容都已弃用。现在,您需要通过
实例
属性和
GetCurrentUserInfo()
方法访问用户信息,即:

DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo()
因此,您可以获得
用户ID
,如下所示:

DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo().UserID
因此,给定一个用户id,您可以获得如下用户信息:

UserController.GetUserById(PortalId,your_user_id)
请注意,
PortalId
是DNN上下文提供的一个属性,因此您只需如上所述键入它即可


我希望这能有所帮助。

实际上,如果您使用的是DNN 7,您可以使用webapi进行调用并获取信息,这相当简单
UserController.GetUserById(PortalId,your_user_id)