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