0

我正在尝试在 SharePoint 托管应用程序中实现权限级别。我创建了一个自定义列表“权限”,我在其中添加了不同的用户及其角色。

我创建了一个页面 List.aspx,我在其中将我的自定义列表“产品”显示为列表视图 Web 部件。Page List.aspx 根据“权限”列表检查用户的角色,页面可以显示或隐藏与该角色有关的内容。问题是,当用户尝试导航到“Lists/Products/Allitems.aspx”或“Lists/Permissions/Allitems.aspx”时,他可以看到列表项。

所有代码检查都是在 JavaScript 中完成的,我知道存在安全风险,但这对我的用户有用。我只需要找到一种方法将自定义 JavaScript 代码注入 Allitems.aspx,并检查用户是否有权查看它。

这里的一切都是在 App web 上完成的,我在主机 web 上没有使用任何东西。

4

1 回答 1

1

我找到了解决方法。基本上我所做的是我只是隐藏了直接访问的列表视图。为此,请打开列表的Schema.xml并替换“JSLink”:

<JSLink>clienttemplates.js</JSLink>

<JSLink>~site/Scripts/OverrideListView.js</JSLink>

现在,创建一个新文件Scripts/OverrideListView.js并向其中添加以下代码:

document.write("<style>body {display:none; };</style>");

现在尝试直接访问Lists/Permissions/Allitems.aspx。你会得到一个空白页。

这基本上是如何将自定义 JS 代码插入列表视图的想法。您可以添加额外的代码来检查当前用户在站点级别的权限以及取消隐藏此视图,或者如果他没有正确的角色或权限,甚至将他重定向到主页。

于 2014-10-31T12:08:43.290 回答