1

我的网站在 .Net 上运行,我使用的是 SDL Tridion 2009。当用户登录时,我可以看到 REMOTE_USER 变量正确存储在声明存储的 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));
} 

更新:

我的墨盒配置包含以下输入声明:

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

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

当我检查日志时,我看到键 REMOTE_USER 但值为空白。

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

4

1 回答 1

3

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

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

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

于 2012-06-21T12:37:42.863 回答