我正在尝试在SharePoint托管的应用程序中实现权限级别。我创建了一个自定义列表"权限",在其中添加不同的用户及其角色。
我已经创建了一个页面List.aspx,在那里我将以列表视图web部件的形式显示我的自定义列表"产品"。Page List.aspx根据"权限"列表检查用户的角色,页面可以显示或隐藏与该角色有关的内容。问题是,当用户尝试导航到"Lists/Products/Allitems.aspx"或"Lists/Permissions/Allitems.asp克斯"时,他可以看到列表项。
所有的代码检查都是用JavaScript完成的,我知道存在安全风险,但这对我的用户来说是可行的。我只需要找到一种方法,将自定义JavaScript代码注入Allitems.aspx,并检查用户是否有权限查看它。
这里的一切都是在应用程序网络上完成的,我在主机网络上没有使用任何东西。
我找到了一个解决方法。基本上,我所做的只是隐藏列表视图以避免直接访问。要实现这一点,请打开列表的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代码插入列表视图的想法。您可以添加额外的代码来检查当前用户在网站级别的权限,并取消隐藏此视图,如果他没有正确的角色或权限,甚至可以将他重定向到主页。