要素服务基于所有权的访问控制
此功能仅适用于企业级地理数据库,而不适用于数据库。
可对要素服务进行配置,以便在数据库中记录有关要素创建者的信息。还可以禁止其他人访问他们并不拥有的要素。这被称为基于所有权的访问控制。
要使用基于所有权的访问控制,您需要在数据集中指定一个字段来保存创建者的名称。然后修改编辑器追踪 设置,将其指定为创建者字段。有关此过程的详细步骤,请参阅要素服务编辑器追踪。
当您发布服务并选中要素访问功能时,请同时选中对要素启用基于所有权的访问控制属性。然后可选择允许对其他用户创建的要素执行的操作(查询、更新和删除)来指定非创建者可以执行的操作。创建者通常可以执行所有允许的服务操作。
请牢记如果取消选中查询,则已登录的用户将只能查看其创建的要素。相反,如果选中查询,并取消选中更新和删除,则用户可进行查询,但将具有对其他用户所有的要素的只读访问权限。
只有在服务可以获取有关要素创建者和访问者信息时,基于所有权的访问控制才起作用。在客户端应用程序中,开发人员必须要求用户输入 ArcGIS Server 凭据。随后开发人员将使用此信息从 ArcGIS Server 处获取令牌。发出请求时,包含用户信息的加密令牌应传递给要素服务。
如果以匿名请求(表示请求不含用户信息)的形式创建要素,则创建者字段为空,任何人都能访问此要素。
由匿名用户通过要素服务所做的编辑已作为 Esri_Anonymous 在地理数据库中登录;然而,这些值在使用要素服务的客户端中将显示为一个空字符串。当通过 REST 服务目录查询要素服务以查找由匿名用户创建的要素时,必须指定 Esri_Anonymous。例如,如果要素图层包含名为 created_by 的创建者字段,请在 Where 字段中键入 created_by='Esri_Anonymous'。
如果服务中的一些数据集未指定创建者字段,则不对这些数据集强制执行基于所有权的访问控制。如果已选中基于所有权的访问控制复选框但未指定创建者字段,在分析要发布的地图时您可能会看到警告。不含创建者字段的图层和表将使用服务级权限规则,请参阅要素服务编辑者权限。
Web 编辑者
在设置基于所有权的访问控制时,可选择指定用户域。例如,如果用户域设置为 myserver.com,并且用户 Bob 通过服务建立连接并插入要素,则创建者设置为 Bob@myserver.com。如果 Bob 在 ArcMap 中插入要素,则创建者设置为 Bob。
基于所有权的访问控制规则对通过服务执行编辑的非管理员 Web 编辑者有效。
提示及最佳做法
还要注意,基于所有权的访问控制选项只限于对所有服务级用户允许的操作。例如,如果不选中服务级“更新”和“删除”操作,则基于所有权的访问控制设置也会取消选中“更新”和“删除”操作。
发布服务时,建议您保持创建者字段对所有图层和表可见。这样,客户端可以了解哪个用户创建了给定要素。客户端可以使用此信息阻止用户尝试编辑其不具有编辑权限的要素。如果创建者字段隐藏,则使用要素服务的客户端无法了解哪个用户创建了给定要素。如果客户端尝试编辑其不具有权限的要素,则将返回错误。
务必注意编辑器追踪与基于所有权的访问控制之间的区别。如果已在数据集级别为图层设置编辑器追踪,则无论是否存在基于所有权的访问规则,要素服务都会对编辑情况进行追踪。但必须设置数据集级别的编辑器追踪才能设置基于所有权的访问规则。
当未经身份验证的用户进行编辑时,创建者或编辑者字段值将留空。如果启用基于所有权的访问控制,则任何用户均可编辑要素。如果启用了基于所有权的访问控制,并且创建者为空,则要素或记录为只读;任何人都不可以编辑要素。服务作者可配置其数据,以便其希望为只读的要素的创建者为空。