3

我目前正在实现 Mark Leusink 的 OpenNTF 多文件上传器。

这个非常好的自定义控件使用 xAgent 将选定的文件附件嵌入到目标 Notes 文档中。在我将 Authors 和 Readers 字段添加到 Notes 文档之前,一切正常。现在上传文件时出现安全错误(402)。

我的想法是上传 xAgent 无法编辑目标文档以附加文件。如果我删除安全字段,一切都会再次运行。

我的问题是,xAgents 是否以与当前用户相同的安全性运行?如果没有,我是否可以像为 Lotus Script 代理一样为 xAgent 设置“运行身份”用户?

4

3 回答 3

5

我建议您查看 xAgent 的代码并重写它以使用 sessionAsSigner 访问数据库/文档以上传文件。这将导致它作为应用程序的签名者运行,并绕过您遇到的安全问题。

于 2012-04-21T14:42:38.393 回答
2

汤姆和德克兰的答案都是正确的,但这不包括文件上传者。

它使用 Flash 组件进行实际上传(称为 SWFUpload)。由于浏览器 cookie 不与 Flash 共享,因此它无法将用户的会话 cookie 与文件一起发送,因此执行上传的用户未登录(又名匿名)到 Domino 服务器。这就是为什么上传者需要允许匿名用户在 ACL 中读取/写入公共文档,并且处理上传文件 ( aUpload.xsp ) 的 XPage/XAgent 设置为允许“公共访问用户”。它使用sessionAsSigner对象来访问数据库的内容

通常,上述设置将允许每个人匿名上传文件。这就是为什么我根据 Mark Ba​​rton 的想法实现了自定义身份验证解决方案:在上传每个文件之前,都会向 XPage 发出请求以检索唯一密钥。该 XPage ( aGetAuth.xsp ) 确实在用户的凭据下运行,并将密钥存储在数据库的文档中。该密钥与上传的文件一起发送并与存储的密钥进行比较。仅当密钥匹配时才允许上传。

首先,如果 aUpload.xsp XAgent 中的代码可以使用 sessionAsSigner 调用读取和写入目标文档,我将检查您的情况。

于 2012-04-22T09:11:32.257 回答
0

马克、德克兰和蒂姆,感谢您的参与。

我修改了xAgent **aGetAuth.xsp**用来sessionAsSigner获取当前数据库的。起初我得到了错误"sessionAsSigner not found"

谷歌给出了一个快速的答案是在测试之前重新签署模板。在重新签署模板两次并执行“干净”之后,一切都运行良好。

于 2012-04-22T23:58:18.137 回答