Tridion 环境数据框架从taf:server:Java中的变量获取远程用户

Tridion 环境数据框架从taf:server:Java中的变量获取远程用户,tridion,tridion2009,tridion-content-delivery,Tridion,Tridion2009,Tridion Content Delivery,我的网站运行在.Net上,我使用的是SDL Tridion 2009。 当用户登录时,我可以看到REMOTE_用户变量正确地存储在声明存储区的taf:server:variables组中(使用.net脚本) 在我的盒式磁带(java)中,我试图提取此值,但我可以看到,当打印索赔存储中的所有内容时,此值为空 我的Java代码如下所示: Map serverParameters = (Map)claimStore.get(WebClaims.SERVER_VARIABLES); for (Obje

我的网站运行在.Net上,我使用的是SDL Tridion 2009。 当用户登录时,我可以看到REMOTE_用户变量正确地存储在声明存储区的taf:server:variables组中(使用.net脚本)

在我的盒式磁带(java)中,我试图提取此值,但我可以看到,当打印索赔存储中的所有内容时,此值为空

我的Java代码如下所示:

Map serverParameters = (Map)claimStore.get(WebClaims.SERVER_VARIABLES);

for (Object key: serverParameters.keySet()) {
  log.debug("Key : " + key.toString() + " Value : " + serverParameters.get(key));
} 
更新:

我的盒带配置包含以下inputclaim:

<InputClaims>
   <ClaimDefinition Uri="taf:server:variables" />
</InputClaims>

不幸的是,这没有帮助,我也尝试了taf:server:variables:remoteuser/remote_user/*但没有成功

当我检查日志时,我看到密钥REMOTE_USER,但该值为空


我想知道是否有其他人见过这种情况并知道解决方案。

如果请求是在没有身份验证的情况下完成的(即允许匿名访问),则远程用户为空是完全有效的

因此,这似乎是最明显的问题。您不应该期望它总是被设置的,但是您当然可以对服务器上的相关URL强制执行身份验证方案,以便在您希望盒带处理的情况下正确填充它


另外,输入声明部分在这种情况下不相关,因为服务器变量不是由盒式磁带设置的,而是由HTTP模块设置的。输入和输出声明仅用于确定盒带之间的依赖关系(以及盒带的顺序)。

定时问题?您的盒带是否在设置值之前执行?如果存在密钥,则应设置该值(至少在我能确定的范围内)。但确实需要确定的是:您的盒带配置是否表明您依赖于REMOTE_用户变量?谢谢chaps,我已经尝试过了,但怀疑声明的url不正确。我已经更新了我的问题。