Xpages xpage按钮运行代理以保存文档

Xpages xpage按钮运行代理以保存文档,xpages,xpages-ssjs,agent,Xpages,Xpages Ssjs,Agent,在xpage web应用程序上,用户只有公共文档的读取权限。 我想为用户找到一种能够保存到表单的方法。 我想最安全的方法是通过代理完成这项任务,因为我读到过一些关于授予公共文档的写访问权不安全的文章 假设我有两个字段:firstname和lastname。 我是将它们绑定到作用域变量以在代理中访问它们,还是有更好的方法 如何在单击按钮时运行代理?下面是正确的吗? var-agent:NotesAgent=database.getAgent(“(寄存器)”) 如何授予代理保存文档的必要权限? 我如

在xpage web应用程序上,用户只有公共文档的读取权限。 我想为用户找到一种能够保存到表单的方法。 我想最安全的方法是通过代理完成这项任务,因为我读到过一些关于授予公共文档的写访问权不安全的文章

假设我有两个字段:firstname和lastname。 我是将它们绑定到作用域变量以在代理中访问它们,还是有更好的方法

如何在单击按钮时运行代理?下面是正确的吗? var-agent:NotesAgent=database.getAgent(“(寄存器)”)

如何授予代理保存文档的必要权限?
我如何在我的代理中获取数据?例如sessionScope.firstName,或者有更好的方法吗?

不要使用代理保存文档。改用
sessionAsSigner

sessionAsSigner
允许在XPage的签名者而不是当前访问XPage的用户的权限下运行代码

例如:

var db:NotesDatabase = sessionAsSigner.getCurrentDatabase();
var doc:NotesDocument = db.createDocument();
...
doc.save();

不要使用代理保存文档。改用
sessionAsSigner

sessionAsSigner
允许在XPage的签名者而不是当前访问XPage的用户的权限下运行代码

例如:

var db:NotesDatabase = sessionAsSigner.getCurrentDatabase();
var doc:NotesDocument = db.createDocument();
...
doc.save();

最终最聪明的方法是:将数据存储到另一个数据库中。XPages允许您写入不同的数据库。如果该名称对其他公共用户不可见,则使用存款人作为访问级别

最终最聪明的方法:将该数据存储到另一个数据库中。XPages允许您写入不同的数据库。如果该名称对其他公共用户不可见,则使用depositor作为访问级别

代理无权访问XPages运行时环境,因此无权访问作用域变量。作用域变量存在于HTTP中运行的XPages JVM中。Amgr甚至与HTTP完全分离。从8.5.1开始(我认为),您可以将未保存的文档传递给代理,但还有其他方法可以保存公共文档。代理无权访问XPages运行时环境,因此无法访问作用域变量。作用域变量存在于HTTP中运行的XPages JVM中。Amgr甚至与HTTP完全分离。由于8.5.1(我认为)您可以将未保存的文档传递给代理,但是还有其他方法可以保存公共文档。您还可以将表单定义为public access和XPage。请参阅Mastering XPages第二版第1065-66页,只需添加一行
doc.replaceItemValue(“表单”、“yourFormName”)克努特·赫尔曼,谢谢,它似乎是这样工作的。我唯一的问题是:这样安全吗?当然安全。作为设计师,您可以决定谁可以做什么。您还可以将表单定义为公共访问和XPage。请参阅Mastering XPages第二版第1065-66页,只需添加一行
doc.replaceItemValue(“表单”、“yourFormName”)克努特·赫尔曼,谢谢,它似乎是这样工作的。我唯一的问题是:这样安全吗?当然安全。你作为设计师决定谁能做什么。