4

特定のパブリケーションに存在するすべてのコンポーネントのリストを取得しようとしているカスタム ページを開発しようとしています。

aspx ページのページ読み込みで、現在ログインしているユーザーのセッションを取得する必要があります。

コードを使おうとすると

    Session currSession = new Session();
    Response.Write(currSession.User.Id);

次のエラーが表示されます。

Access is denied for the user NT AUTHORITY\NETWORK SERVICE

コードを試してみると

Session currSession = new Session(WindowsIdentity.GetCurrent());
Response.Write(currSession.User.Id);

次のエラーが表示されます。

The name 'WindowsIdentity' does not exist in the current context

1.) カスタム ページでセッションを取得するための適切な方法は何ですか? HttpContext.Current.Request.ServerVariables.Get("REMOTE_USER") を使用してユーザーを取得できますか。

2.) カスタム ページは CoreServices または TOM.NET API を使用して CM から情報を取得する必要があります。どちらが好ましいオプションです。

4

2 に答える 2

2

Windows 認証を使用する場合は、このスニペットを使用して、.aspx に関連付けられている現在のユーザーとロールを表示できます。

<%@ Import Namespace="System.Web.Security" %>  
<% 
string[] rolesArray = Roles.GetRolesForUser();
Response.Write("<strong>LoggedIn User = </strong>" + HttpContext.Current.User.Identity.Name + "<br />");
Response.Write("<strong>Roles LoggedIn User = </strong><br />" + string.Join(",<br />", rolesArray));
%>

これをカスタム ページの web.config に追加する必要があるかもしれません。

<authentication mode="Windows" />
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />

これが役に立てば幸いです、Guus

于 2013-03-29T08:04:33.970 に答える