2014-12-04 32 views
0

在xpage網頁應用程序中,用戶只有公共文檔讀取權限。 我想找到一種方法讓用戶能夠保存到表單。 我想最安全的方法是通過代理做這件事,因爲我讀somwhere給公共文檔寫訪問是不安全的。xpage按鈕運行代理保存文檔

比方說,我有2個字段:名字和姓氏。 我是否將它們綁定到一個scoped變量以在代理中擁有訪問權限,還是有更好的方法?

如何在單擊按鈕上運行代理?是否正確? var agent:NotesAgent = database.getAgent(「(register)」);

我該如何給代理人保存文檔所需的權限? 如何在我的代理中獲取我的數據?與例如sessionScope.firstName或有更好的方法嗎?

+0

代理無權訪問XPage運行時環境,因此無權訪問作用域變量。範圍變量存在於HTTP中運行的XPages JVM中。 Amgr甚至與HTTP完全分離。自8.5.1(我認爲)以來,您可以將未保存的文檔傳遞給代理,但還有其他方式可以保存公共文檔。 – 2014-12-04 10:13:46

回答

3

的最終聰明的方式:商店的數據到另一個數據庫在所有。 XPages允許你寫入不同的數據庫。如果該名稱對其他公共用戶不可見,則使用存儲器作爲訪問級別

1

請勿使用代理保存文檔。改爲使用sessionAsSigner

sessionAsSigner允許在獲得XPage簽名者的許可而不是當前用戶訪問XPage的情況下運行代碼。

例子:

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

您也可以將表單定義爲公共訪問和XPage。請參閱Mastering XPages第2版第1065-66頁 – 2014-12-04 10:15:25

+0

Knut Hermann,如何將它保存到表單中? – 2014-12-04 10:41:36

+0

只需添加一行'doc.replaceItemValue(「Form」,「yourFormName」);' – 2014-12-04 10:44:56