【问题标题】:Xpages: Searching for documents I have no access toXpages:搜索我无权访问的文档
【发布时间】:2013-03-22 20:14:39
【问题描述】:

我很确定这是不可能的,但我还是要问一下。

我正在构建一个处理患者记录的系统。新用户需要能够搜索患者并在找到后请求管理员访问他们的文件。

即使用户无权访问,我如何显示所有文档的列表?只有将它们添加到“读者”字段后,它们才会出现在视图中,这违背了搜索的目的。

我的计划是创建 2 个文档 - 原始患者文档和包含姓名、地址的精简文档,仅用于搜索

有没有更好的方法来做到这一点,或者 2 文档方法是要走的路?

【问题讨论】:

    标签: security xpages


    【解决方案1】:

    使用 sessionAsSigner 获取数据库签名者权限的数据库对象并对其运行搜索。这将为您提供可以类似于使用数据表查看的文档集合。

    示例(对于中等视图效果很好 - 对于较大的视图可能需要一些优化):

     <xp:panel id="viewPanel" styleClass="usersPanel">
        <xp:this.dataContexts>
            <xp:dataContext var="usersList">
                <xp:this.value><![CDATA[#{javascript:               
    var uview = sessionAsSigner.getCurrentDatabase().getView("someView");
    uview.FTSearch("Some query");
    return uview.getAllEntries();
     }]]></xp:this.value>
            </xp:dataContext>
        </xp:this.dataContexts>
        <xp:pager partialRefresh="true" layout="Previous Group Next"
            xp:key="headerPager" id="pager2" for="usersList">
        </xp:pager>
        <xp:dataTable id="usersList" rows="30"
            var="entry" value="#{usersList}">
    
            <xp:column id="column1">
                <xp:this.facets>
                    <xp:span xp:key="header"
                        styleClass="frameworkViewColumnHeader">
                        Użytkownik
                    </xp:span>
                </xp:this.facets>
                <xp:text escape="true" id="computedField1"
                    value="#{javascript:entry.getColumnValues().get(0)}">
                </xp:text>
            </xp:column>
            <xp:column id="column2">
                <xp:this.facets>
                    <xp:span xp:key="header"
                        styleClass="frameworkViewColumnHeader">
                        Instytucja
                    </xp:span>
                </xp:this.facets>
                <xp:text escape="true" id="computedField2"
                    value="#{javascript:entry.getColumnValues().get(1)}">
                </xp:text>
            </xp:column>
        </xp:dataTable>
     </xp:panel>
    

    【讨论】:

    • 搜索后,用户是否可以访问文档,或者这是否会像往常一样由 ACL 管理?
    • 仅在搜索和数据表渲染时授予签名者权限。例如,当他尝试打开文档时,对文档的访问将由 ACL 管理
    • 非常感谢。所以表的数据源是 - sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath()).getView("VIEW NAME") ??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多