我目前正在实现Mark Leusink的OpenNTF多文件上传器。
这个非常好的自定义控件使用xAgent将选定的文件附件嵌入到目标Notes文档中。在我将Authors和Readers字段添加到Notes文档之前,一切都很正常。现在我在上传文件时收到一个安全错误(402)。
我的想法是Upload xAgent不能编辑目标文档来附加文件。如果我删除安全字段,一切都会恢复正常。
我的问题是,xAgents是否使用与当前用户相同的安全性运行?如果没有,我是否可以像设置Lotus脚本代理一样为xAgent设置一个"run as“用户?
发布于 2012-04-21 22:42:38
我建议您查看xAgent的代码并重写它,以便使用sessionAsSigner访问数据库/文档来上传文件。这将导致它作为应用程序的签名者运行,并绕过您遇到的安全问题。
发布于 2012-04-22 17:11:32
Tom和Declan的答案都是正确的,但这不适用于文件上传器。
它使用闪存组件进行实际的上传(称为SWFUpload)。由于浏览器cookie不与Flash共享,因此它不能将用户的会话cookie与文件一起发送到Domino服务器,因此执行上传的用户没有登录(也称为匿名)。这就是为什么上传器要求允许匿名用户读/写ACL中的公共文档,并将处理上传文件的XPage/ XAgent (aUpload.xsp)设置为允许“公共访问用户”。它使用sessionAsSigner对象来访问数据库的内容
通常,上述设置将允许每个人匿名上传文件。这就是我基于Mark Barton的想法实现自定义authentication solution的原因:在上传每个文件之前,都会向XPage发出一个请求,以检索唯一的密钥。该(aGetAuth.xsp) XPage在用户的凭证下运行,并将密钥存储在数据库的文档中。该密钥与上传的文件一起发送,并与存储的密钥进行比较。仅当密钥匹配时才允许上传。
在您的例子中,我首先要检查aUpload.xsp XAgent中的代码是否可以使用sessionAsSigner调用读写目标文档。
发布于 2012-04-23 07:58:18
马克,德克兰和蒂姆,感谢你们的加入。
我修改了xAgent **aGetAuth.xsp**以使用sessionAsSigner来获取当前数据库。起初,我得到了错误"sessionAsSigner not found"。
谷歌显示,一个快速的答案是在测试之前重新签署模板。在重新签署模板后,两次,并执行一个“干净”,一切工作出色。
https://stackoverflow.com/questions/10259124
复制相似问题