我想允许一定组的用户向列表中添加项目,但不允许他们查看全部内容。这是为了设置一个具有私密部分的工作流程。我认为通过在以下位置定义新的权限级别来实现:
http://servername/_layouts/addrole.aspx(“添加权限级别”页面)
然而,当您选择“添加项目”列表权限时,“查看项目”也会自动被选中。
有人知道解决办法吗?
我想允许一定组的用户向列表中添加项目,但不允许他们查看全部内容。这是为了设置一个具有私密部分的工作流程。我认为通过在以下位置定义新的权限级别来实现:
http://servername/_layouts/addrole.aspx(“添加权限级别”页面)
然而,当您选择“添加项目”列表权限时,“查看项目”也会自动被选中。
有人知道解决办法吗?
作为一种折衷方案,您可以设置列表只显示给所有者看(设置 > 高级设置然后将读访问/编辑访问选项设置为“仅自己”。这不会阻止人们查看由他们添加的所有项目,但除了列表所有者外,没有任何可查看的内容。
$spweb=Get-SPWeb -Identity "<site url>";
$spRoleDefinition = New-Object Microsoft.SharePoint.SPRoleDefinition;
$spRoleDefinition.Name = "Submit only";
$spRoleDefinition.Description = "Can submit/add forms/files/items into library or list but cannot view/edit them.";
$spRoleDefinition.BasePermissions = "AddListItems, ViewPages, ViewFormPages, Open";
$spweb.RoleDefinitions.Add($spRoleDefinition);
我遇到了类似的问题,不希望匿名用户看到列表内容。
同样的解决方案可能适用于此情况。
在SharePoint设计器中(由于某种原因无法在Web上编辑页面),打开DispForm.aspx页面,在WebPart属性中添加目标受众(如果不希望任何人看到,则使WebPart隐藏)不要删除WebPart-这样做会完全破坏您的列表!
可以在AllItems.aspx上执行相同的操作
希望这可以帮助你。
@Jomit。你的解决方法可能有效,但它存在竞态条件问题。用户仍然有机会看到其他项目。这可能根据您的规则是不可行的。
在SharePoint中,常规列表在“设置/高级设置/项级权限”下提供此选项。尽管由于某种原因,此选项在GUI中缺失了文档和表单库。
一种可能的解决方案是编写一个简单的程序,使用SharePoint对象模型进行这些更改。 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.writesecurity.aspx
// Sample code for setting writing and reading security on a form library
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite(args[0]))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[args[1]];
list.WriteSecurity = 2;
list.ReadSecurity = 2;
list.Update();
}
}
}
}
我完全同意'Ceesaaxp'的观点。在列表的高级设置下,将读取访问权限设置为仅限他们自己。我创建了一个知识管理流程,其中我创建了两个列表,一个用于待处理的知识文章,另一个用于已批准的文章。我修改了待处理列表的“新建表单”页面,并使用JavaScript禁用了一个下拉框,该下拉框用作文章状态。然后将此下拉框永久设置为“待处理”。我还创建了一个新的权限级别,允许用户仅添加项目。然后我创建了一个工作流,当状态下拉框设置为“已批准”时,将文章移动到已批准列表中。
然后我更改了待处理列表的高级设置中的只读设置,以便在发布所有知识文章之前都经过批准。
使用SharePoint Designer,我只能想到使用工作流将任何项目从公共“投递箱”列表移动到安全列表。
用户可以查看和上传项目到公共投递箱,但立即启动一个工作流,将内容移动到另一个相同的安全列表。您可以决定是否需要允许内容覆盖。
这是一个hacky解决方法,但没有编程,SharePoint就是这样。(我的公司还不允许我对其编写代码)
您并没有具体说明您正在使用哪种列表,但是如果您在列表设置中查看“高级设置”,您可能会找到一个“项目级别权限”部分。这将允许您选择仅限制用户阅读(或编辑)他们提交的项。这超越了列表或其项上设置的其他ACL。
我认为使用高级权限并不可行,因为它无法阻止提交者查看它,否则这是一个好的解决方案! 我认为工作流可以胜任这项工作。只需确保上传项目时触发工作流程。然后,如果您可以构建一个工作流程,可以将特定权限设置为该项目,则所有事情都应该完成。 如果您不想亲自动手构建工作流程,请访问3w.sharepointboost.com,那里有一种名为“列视图权限”的即插即用解决方案。