我正在尝试在SharePoint托管应用中实现权限级别。我已经创建了一个自定义列表“权限”,我在其中添加了不同的用户及其角色。
我创建了一个List.aspx页面,其中我将自定义列表“Products”显示为列表视图Web部件。 Page List.aspx根据“权限”列表检查用户的角色,页面可以显示或隐藏与此角色相关的内容。问题是,当用户尝试导航到“Lists / Products / Allitems.aspx”或“Lists / Permissions / Allitems.aspx”时,他可以看到列表项。
所有代码检查都是在JavaScript中完成的,我知道存在安全风险,但这对我的用户有效。我只需要找到一种方法将自定义JavaScript代码注入Allitems.aspx,并检查用户是否有权查看它。
这里的所有内容都是在App网站上完成的,我在主机网站上没有使用任何内容。
答案 0 :(得分:1)
我找到了解决方法。基本上我所做的是我只是隐藏列表视图直接访问。要实现此目的,请打开列表的 Schema.xml 并替换" JSLink":
这
<JSLink>clienttemplates.js</JSLink>
到
<JSLink>~site/Scripts/OverrideListView.js</JSLink>
现在,创建一个新文件 Scripts / OverrideListView.js 并向其添加以下代码:
document.write("<style>body {display:none; };</style>");
立即尝试直接访问列表/权限/ Allitems.aspx 。你会得到一个空白页面。
这基本上是如何将自定义JS代码插入列表视图的。您可以添加其他代码来检查网站级别的当前用户权限,以及取消隐藏此视图的权限,或者如果他没有正确的角色或权限,甚至可以将其重定向到主页。