我目前正在实施Mark Leusink的OpenNTF多文件上传器。
这个非常好的自定义控件使用xAgent将选定的文件附件嵌入到目标Notes文档中。一切都运行良好,直到我将作者和读者字段添加到Notes文档。现在我在上传文件时收到安全错误(402)。
我的想法是上传xAgent无法编辑目标文档来附加文件。如果我删除安全字段,一切都会再次起作用。
我的问题是,xAgent是否以与当前用户相同的安全性运行?如果没有,我可以像为Lotus Script代理一样为xAgent设置“run as”用户吗?
答案 0 :(得分:5)
我建议您查看xAgent的代码并重写它以使用sessionAsSigner访问数据库/文档以上载文件。这将使它作为应用程序的签名者运行,并绕过您遇到的安全问题。
答案 1 :(得分:2)
汤姆和德克兰的答案都是正确的,但这并不算是文件上传者。
它使用Flash组件进行实际上传(称为SWFUpload)。由于浏览器cookie不与Flash共享,因此它无法沿用户的会话cookie发送文件,因此无法向Domino服务器发送执行上载的用户登录(也称为匿名)。这就是为什么上传者要求允许匿名用户在ACL中读/写公共文档,并且处理上传文件的XPage / XAgent( aUpload.xsp )设置为允许“公共访问用户”。它使用 sessionAsSigner 对象来访问数据库的内容
通常,上述设置允许每个人匿名上传文件。这就是我根据Mark Barton的想法实现自定义authentication solution的原因:在上传每个文件之前,向XPage发出请求以检索唯一密钥。 XPage( aGetAuth.xsp )确实在用户凭据下运行,并将密钥存储在数据库中的文档中。此密钥与上载的文件一起发送,并与存储的密钥进行比较。只有在密钥匹配时才允许上传。
如果aUpload.xsp XAgent中的代码可以使用sessionAsSigner调用读取和写入目标文档,那么我首先要检查你的情况。
答案 2 :(得分:0)
马克,德克兰和蒂姆,感谢您的加入。
我修改了xAgent **aGetAuth.xsp**
以使用sessionAsSigner
来获取当前数据库。起初我收到错误"sessionAsSigner not found"
。