dotnetnukeフレームワークにuserIdを渡すことができ、そのuserIdの詳細で満たされたUserInfoオブジェクトを返す何かがありますか?
そうでない場合、これを行う通常の方法は何でしょうか?
dotnetnukeフレームワークにuserIdを渡すことができ、そのuserIdの詳細で満たされたUserInfoオブジェクトを返す何かがありますか?
そうでない場合、これを行う通常の方法は何でしょうか?
これを試してください(DNN 5.xとC#で)
private UserInfo _currentUser =
DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo();
その後、後でUserInfoを使用します...
int UserID = _currentUser.UserID
私は1つの変更を加えてbdukesによって投稿された方法を使用しました:PortalIdはPortalSettingsから取得できます:
DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUser(PortalSettings.PortalId, user_id, true);
現在のユーザーを取得するために、バージョン7.3以降、上記のすべてが非推奨になりました。Instance
次に、プロパティとGetCurrentUserInfo()
メソッドを介してユーザー情報にアクセスする必要があります。
DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo()
したがって、あなたはそのように得ることができますUserId
:
DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo().UserID
したがって、ユーザーIDを指定すると、次のようなユーザー情報を取得できます。
UserController.GetUserById(PortalId,your_user_id)
これPortalId
はDNNコンテキストによって提供されるプロパティであるため、上記のように入力するだけで済みます。
これがお役に立てば幸いです。
DotNetNuke.Entities.Users.UserControllerには、ポータルIDもある場合に、それを実行するメソッド(GetUser)があると思います。ユーザーはポータル間で共有できるため、ユーザーがUserInfoオブジェクトを適切に入力する前に、ユーザー情報を要求しているポータルを知っておく必要があります(明らかに)。
ユーザーIDのみがあり、ポータルIDがない場合は、最初にポータルIDも取得できるかどうかを確認することをお勧めします。そうでない場合は、データベースにアクセスして必要なものを入手する必要があります。理想的には、できる限りそこにいることはありません(データベースは保証されたAPIではないため)。したがって、ユーザーのポータルIDを取得するために簡単なクエリを実行するだけの場合は、次のようになります。
SELECT PortalID From {databaseOwner}{objectQualifier}UserPortals WHERE UserID = @userId
次に、UserController.GetUserを使用して、必要なものを取得できます。
ユーザーIDが返されない問題は何ですか
Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo
response.write(nowUser)
現在のユーザーを取得する必要がある場合は、次のようになります。
Dim nowUser As UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo
ただのメモ。