Xpages - 从 ACL 设置为无访问权限的不同数据库创建重复或视图
Xpages - Creating Repeat or View from different database with ACL set to No Access
我正在尝试从不允许匿名 ACL 访问的不同数据库中的视图创建重复元素。
- PubDb.nsf 为作者匿名的用户设置了 ACL
- PrivDb.nsf 已为匿名用户和默认用户设置 ACL "no access"。
数据库 PrivDb 包含我想要保护的信息,但我想拉出几个视图以供 public 显示。
当我使用 PrivDb.nsf 视图在 PubDb.nsf 中创建重复时,它不会显示任何数据。我可以使用 sessionAsSigner 让 SSJS 在服务器端级别查看视图和打开文档,但是当我尝试显示视图或重复元素时没有数据?如果我将匿名的 PrivDb 中的 ACL 更改为 Reader 一切正常,但现在整个数据库都对匿名访问开放。
我了解 sessionAsSigner 和 sessionAsSignerWithFullAccess 允许我使用 db signers 有效权限,我可以使用 SSJS 访问 notesdocuments 并使用单个文档的计算字段发布数据,但我找不到任何信息告诉我我可以或不能使用 sessionAsSigner 显示 xpages 元素(重复或查看)。也许我可以创建一个填充块的 lotusscript 代理?
下面是我用来在 PubDb.nsf 中创建重复元素的代码。请注意,我分配了两次数据库,一次是在应用程序中,另一次是在视图中,因为当我没有在视图的计算值中使用 sessionAsSigner 时,系统会提示我进行身份验证,并且它在应用程序字段中是必需的。
<xp:this.data>
<xp:dominoView var="view2">
<xp:this.databaseName><![CDATA[${javascript:
var DB:NotesDatabase=sessionAsSigner.getDatabase(database.getServer(),"PrivDb.nsf");
DB;
}]]>
</xp:this.databaseName>
<xp:this.viewName><![CDATA[${javascript:
var dbOther:NotesDatabase = sessionAsSignerWithFullAccess.getDatabase(database.getServer(), "PrivDb.nsf");
var lookupView:NotesView = dbOther.getView( "PrivView" );
lookupView.recycle();
lookupView}]]>
</xp:this.viewName>
</xp:dominoView>
</xp:this.data>
<div class="container">
<div class="page-header">
<h1>This is a test.</h1>
</div>
<xp:br></xp:br>
<xp:br></xp:br>
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-10">
<xp:repeat id="repeat1" rows="30" var="playerData"
value="#{view2}" repeatControls="true">
<div class="panel panel-default">
<xp:text escape="true" id="computedField1"
value="#{playerData.}">
</xp:text>
hcp:  
<xp:text escape="true" id="computedField5"
value="#{playerData.}">
</xp:text>
<xp:br></xp:br>
<xp:text escape="true" id="computedField2"
value="#{playerData.}">
</xp:text>
   
<xp:text escape="true" id="computedField3"
value="#{playerData.}">
</xp:text>
   
<xp:text escape="true" id="computedField4"
value="#{playerData.}">
</xp:text>
<xp:br></xp:br>
</div>
<div class="col-md-1"></div>
</xp:repeat>
</div>
</div>
</div>
尝试将重复更改为 return,例如直接使用 sessionAsSigner 的视图条目,而不是通过视图数据源。所以在你的情况下:
<xp:repeat id="repeat1" rows="30" var="playerData">
<xp:this.value><![CDATA[#{javascript:
sessionAsSigner.getDatabase(database.getServer(), "PrivDb.nsf").getView("PrivView").getAllEntries();
}]]></xp:this.value>
...
</xp:repeat>
我正在尝试从不允许匿名 ACL 访问的不同数据库中的视图创建重复元素。
- PubDb.nsf 为作者匿名的用户设置了 ACL
- PrivDb.nsf 已为匿名用户和默认用户设置 ACL "no access"。
数据库 PrivDb 包含我想要保护的信息,但我想拉出几个视图以供 public 显示。
当我使用 PrivDb.nsf 视图在 PubDb.nsf 中创建重复时,它不会显示任何数据。我可以使用 sessionAsSigner 让 SSJS 在服务器端级别查看视图和打开文档,但是当我尝试显示视图或重复元素时没有数据?如果我将匿名的 PrivDb 中的 ACL 更改为 Reader 一切正常,但现在整个数据库都对匿名访问开放。
我了解 sessionAsSigner 和 sessionAsSignerWithFullAccess 允许我使用 db signers 有效权限,我可以使用 SSJS 访问 notesdocuments 并使用单个文档的计算字段发布数据,但我找不到任何信息告诉我我可以或不能使用 sessionAsSigner 显示 xpages 元素(重复或查看)。也许我可以创建一个填充块的 lotusscript 代理?
下面是我用来在 PubDb.nsf 中创建重复元素的代码。请注意,我分配了两次数据库,一次是在应用程序中,另一次是在视图中,因为当我没有在视图的计算值中使用 sessionAsSigner 时,系统会提示我进行身份验证,并且它在应用程序字段中是必需的。
<xp:this.data>
<xp:dominoView var="view2">
<xp:this.databaseName><![CDATA[${javascript:
var DB:NotesDatabase=sessionAsSigner.getDatabase(database.getServer(),"PrivDb.nsf");
DB;
}]]>
</xp:this.databaseName>
<xp:this.viewName><![CDATA[${javascript:
var dbOther:NotesDatabase = sessionAsSignerWithFullAccess.getDatabase(database.getServer(), "PrivDb.nsf");
var lookupView:NotesView = dbOther.getView( "PrivView" );
lookupView.recycle();
lookupView}]]>
</xp:this.viewName>
</xp:dominoView>
</xp:this.data>
<div class="container">
<div class="page-header">
<h1>This is a test.</h1>
</div>
<xp:br></xp:br>
<xp:br></xp:br>
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-10">
<xp:repeat id="repeat1" rows="30" var="playerData"
value="#{view2}" repeatControls="true">
<div class="panel panel-default">
<xp:text escape="true" id="computedField1"
value="#{playerData.}">
</xp:text>
hcp:  
<xp:text escape="true" id="computedField5"
value="#{playerData.}">
</xp:text>
<xp:br></xp:br>
<xp:text escape="true" id="computedField2"
value="#{playerData.}">
</xp:text>
   
<xp:text escape="true" id="computedField3"
value="#{playerData.}">
</xp:text>
   
<xp:text escape="true" id="computedField4"
value="#{playerData.}">
</xp:text>
<xp:br></xp:br>
</div>
<div class="col-md-1"></div>
</xp:repeat>
</div>
</div>
</div>
尝试将重复更改为 return,例如直接使用 sessionAsSigner 的视图条目,而不是通过视图数据源。所以在你的情况下:
<xp:repeat id="repeat1" rows="30" var="playerData">
<xp:this.value><![CDATA[#{javascript:
sessionAsSigner.getDatabase(database.getServer(), "PrivDb.nsf").getView("PrivView").getAllEntries();
}]]></xp:this.value>
...
</xp:repeat>