Xpages - 从ACL设置为No Access的不同数据库创建Repeat或View

car*_*rlo 0 lotus-notes xpages xpages-ssjs

我试图从不允许匿名ACL访问的不同数据库中的视图创建重复元素.

  • PubDb.nsf为用户Anonymous to Author设置了ACL
  • PrivDb.nsf为用户匿名设置了ACL,默认为"无访问权限".

数据库,PrivDb有我想要保护的信息,但是想要公开显示几个视图.

当我使用PrivDb.nsf视图在PubDb.nsf中创建重复时,它不会显示任何数据.我可以使用sessionAsSigner来获取SSJS以查看视图并在服务器端级别打开文档,但是当我尝试显示视图或重复元素时,没有数据?如果我将PrivDb中的ACL更改为Anonymous to Reader,一切正常,但现在整个数据库都对匿名访问开放.

我理解sessionAsSigner和sessionAsSignerWithFullAccess允许我使用db签名者有效的权限,我可以使用SSJS访问notesdocuments并使用单个docs的计算字段发布数据,但我找不到任何告诉我能够或可以' t使用sessionAsSigner显示xpages元素(重复或查看).也许我可以创建一个填充块的lotusscript代理?

下面是我用于在PubDb.nsf中创建repeat元素的代码.注意,我分配了DB两次,一次在Application中,再次在View中,因为当我在视图的计算值中没有使用sessionAsSigner时,我会收到提示进行身份验证,并且在app字段中需要它.

<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.$5}">
                    </xp:text>
                    hcp: &#160;
                    <xp:text escape="true" id="computedField5"
                        value="#{playerData.$6}">
                    </xp:text>
                    <xp:br></xp:br>
                    <xp:text escape="true" id="computedField2"
                        value="#{playerData.$7}">
                    </xp:text>
                    &#160; &#160;
                    <xp:text escape="true" id="computedField3"
                        value="#{playerData.$8}">
                    </xp:text>
                    &#160; &#160;
                    <xp:text escape="true" id="computedField4"
                        value="#{playerData.$9}">
                    </xp:text>
                    <xp:br></xp:br>
                </div>
                <div class="col-md-1"></div>
            </xp:repeat>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Per*_*ten 5

尝试更改重复以直接使用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>
Run Code Online (Sandbox Code Playgroud)