获取当前登录用户的会话 - 自定义页面

问题描述:

我正在尝试开发一个自定义页面,其中,我试图获取特定发布中存在的所有组件列表。获取当前登录用户的会话 - 自定义页面

在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获取信息。哪个是首选方案。

对于模板和事件系统以外的进程,您不能使用TOM.NET API。请使用核心服务API代替(在这里你不需要一个会话)。

我可能会将其改为:您不应该使用TOM.NET API进行模板和事件系统以外的过程。从技术上讲,这是可能的,但不应该像那样使用,这就是核心服务的推出。

+0

的例外是观众经理/通讯录为核心的服务不公开任何AM功能 - SE e http://*.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

如果你想使用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" /> 

希望这有助于 希丁克