webdav - 实施 WebDAV ACL:我应该修改还是替换访问条目?
问题描述
假设我第一次对资源执行 ACL 方法:
<?xml version="1.0" encoding="utf-8" ?>
<D:acl xmlns:D="DAV:">
<D:ace>
<D:principal>
<D:href>http://www.example.com/users/esedlar</D:href>
</D:principal>
<D:grant>
<D:privilege><D:write/></D:privilege>
</D:grant>
</D:ace>
</D:acl>
然后第二次在同一资源上:
<?xml version="1.0" encoding="utf-8" ?>
<D:acl xmlns:D="DAV:">
<D:ace>
<D:principal>
<D:href>http://www.example.com/users/esedlar</D:href>
</D:principal>
<D:grant>
<D:privilege><D:read/></D:privilege>
</D:grant>
</D:ace>
</D:acl>
在请求 #2 之后,是否应该为http://www.example.com/users/esedlar保留 D:write?
解决方案
RFC 摘录:https ://www.rfc-editor.org/rfc/rfc3744#page-40
具体来说,ACL 方法只允许对未继承且不受保护的 ACE 进行修改。ACL 方法调用会修改资源访问控制列表中的所有非继承和非保护 ACE,以与请求正文的 DAV:acl XML 元素(在第 5.5 节中指定)中包含的 ACE 完全匹配。ACL 请求正文必须仅包含一个 DAV:acl XML 元素。除非可以将资源的 DAV:acl 属性的非继承和非保护 ACE 更新为 ACL 请求中指定的值,否则 ACL 请求必须失败。
推荐阅读
- javascript - 函数运行队列中的 javascript 函数
- maven - 在 Jenkins 中执行 Maven 项目时出错
- python - 如何正确格式化时间,以便在使用 matplotlib 绘图时正确显示
- apache-spark - 无分区列性能的 Spark 下推过滤器
- angular - 如何以角度在动态组件中绑定和发出动态事件
- excel - 如何在 Excel 中使用起始编号和结束编号在 Excel 中创建一列数字?
- python - CNN 模型没有考虑训练数据集中的所有数据,而是只考虑部分数据,我在所有时期都得到完全相同的准确度
- css - 身高:100% 不被继承
- oracle - SQL Developer:PLSCOPE_SETTINGS“无”和“全部”之间的区别?
- function - 为什么 Lua 表达式中没有匿名函数?