我正在开发一个面向公众的 MOSS 2007 站点,该站点使用 ViewFormPagesLockDown 功能来阻止匿名用户访问标准列表表单。我不想失去此功能提供的额外安全性,但有一些列表允许匿名用户访问表单。
我可以在列表设置、列表模板或功能代码中做些什么来阻止特定列表或表单要求 SPBasePermissions.ViewFormPages?
我正在开发一个面向公众的 MOSS 2007 站点,该站点使用 ViewFormPagesLockDown 功能来阻止匿名用户访问标准列表表单。我不想失去此功能提供的额外安全性,但有一些列表允许匿名用户访问表单。
我可以在列表设置、列表模板或功能代码中做些什么来阻止特定列表或表单要求 SPBasePermissions.ViewFormPages?
我无法找到解决方法。对 LockDown 功能的支持似乎已融入表单类。相反,我们所做的是创建一个带有自己的ListFormWebPart的单独页面。以下是对我们内部博客条目的改编,其中我概述了允许匿名用户向列表添加新项目的步骤:
在列表设置中,转到高级设置。确保读取访问权限设置为所有项目。返回到列表设置并为此列表选择权限。通过选择操作 > 编辑权限中断从站点的继承。注意:如果您在名称左侧看到一个复选框,则此步骤已完成。设置自定义权限后,选择设置 > 匿名访问。选中添加项目,然后单击确定。要完成匿名访问,请返回“设置”>“高级设置”,然后重置为读取权限和编辑权限都选择“仅他们自己”,然后单击“确定”。
使用站点操作 > 创建页面创建一个新页面。打开网站 SharePoint Designer。右键单击新创建的页面并选择从页面布局中分离。将光标定位在 Web 部件区域内,然后选择插入 > SharePoint 控件 > 自定义列表表单。选择适当的列表和新建项目表单,然后单击确定。在“代码”窗格中,将新创建的 DataFormWebPart 中的 DataSourceMode 从 ListItem 更改为 Webs 。保留 ListItem 的默认设置,匿名用户会收到“拒绝访问。您无权执行此操作或访问此资源”错误。保存并在浏览器中查看页面。
为获得最佳结果,请仅在开发服务器上使用 SharePoint Designer。要将 WebPart 迁移到生产,请在浏览器中打开开发服务器上的页面,然后从 WebPart 菜单中选择导出。保存 WebPart 文件。在浏览器中打开生产服务器上的页面,然后从站点操作中选择编辑页面。从页面工具栏上的菜单中,选择页面 > 添加 Web 部件 > 导入。输入从开发服务器保存的 WebPart 文件的位置,然后单击上传。接下来,将导入的 WebPart 从右侧的工具窗格中拖到所需的 WebPart 区域中。要保存页面,请单击发布。
一个较老的问题,但我想我会添加另一个可以用来执行此操作的选项。
解决方案:
正如 Rich 提到的列表中的打破权限继承。关闭 ViewFormPagesLockDown 功能。
设置匿名用户访问列表。打开 ViewFormPagesLockDown 功能。
匿名用户现在应该只能访问列表的应用程序页面。
原因: ViewFormPagesLockDown 功能从“受限访问”权限角色中删除了“查看应用程序页面”和“使用远程接口”权限。但是,在切换匿名访问选项之前,匿名用户不会获取对该角色的更改。这适用于站点或列表级别。因此,如果您希望特定网站或列表对应用程序页面具有不同的匿名访问权限,您可以使用上述解决方案来更改它。