2012-07-11 149 views
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

對於模板和事件系統以外的進程,您不能使用TOM.NET API。請使用核心服務API代替(在這裏你不需要一個會話)。

我可能會將其改爲:您不應該使用TOM.NET API進行模板和事件系統以外的過程。從技術上講,這是可能的,但不應該像那樣使用,這就是核心服務的推出。

+0

的例外是觀衆經理/通訊錄爲核心的服務不公開任何AM功能 - SE e http://stackoverflow.com/questions/10962162/core-service-2011-address-books。 – Neil 2012-07-11 12:22:07

+0

如果您正在Tridion網站的「內部」運行,則可以使用以下方式獲取當前用戶:HttpContext.Current.User.Identity.Name – 2012-07-11 12:23:31

+0

Tridion.AudienceManagement.API不是TOM.NET的一部分,一個你可以在自定義頁面中使用,你不需要在那裏有一個會話。 – 2012-07-11 12:38:39

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" /> 

希望這有助於 希丁克