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