Qunhe Network · Technische und gestalterische Dienstleistungen für Unternehmen
Telefon130 6699 2285Gleiche WeChat-ID

判断能否编辑某篇文章,为什么不能只检查用户角色名称?

对象权限与角色名称:角色名称,一组能力的标签,不能覆盖对象条件;元能力,结合对象作判断,需要正确对象ID;界面按钮,控制可见入口,不是服务端授权
对象权限与角色名称:关键概念与边界对照。原创知识示意,点击可查看大图。

在WordPress开发中,应检查用户对具体对象的能力,而不是只比较角色字符串。编辑自己的草稿、他人的文章和已发布页面可能需要不同权限;只写“是作者就允许”容易漏掉对象和状态条件。

先明确操作与目标对象

将读取、编辑、发布和删除分开,记录操作的文章ID及内容类型。用户能写新文章,不代表能编辑另一人的已发布内容。自定义文章类型还可能注册不同能力,因此不能把所有对象都按普通文章的角色表推断。

理解元能力的映射

current_user_can支持在edit_post等元能力后传入对象ID,由映射机制结合对象属性检查底层能力。通用edit_posts与具体edit_post不是完全相同的问题。插件还可能过滤能力,判断应发生在实际执行请求中而非只在菜单展示时。

对象权限与角色名称:界定动作对象、使用对象能力、服务端再次授权、测试允许与拒绝
排查流程:界定动作对象 → 使用对象能力 → 服务端再次授权 → 测试允许与拒绝。原创知识示意,点击可查看大图。

界面隐藏不是权限检查

隐藏编辑按钮可以改善界面,但服务端接口、AJAX动作和批量操作仍需独立检查能力。nonce用于请求来源等保护,也不能代替授权。即使用户看不到入口,也要确保不能通过其他合法请求路径执行未授权动作。

用不同对象建立测试矩阵

在测试站分别核对自己的草稿、他人的草稿、已发布内容和不允许的内容类型,验证允许与拒绝均符合设计。保存具体能力及对象条件,避免以后角色插件调整后靠名称相同继续误判。不要用生产文章执行破坏性试验。

关键区别

对象权限与角色名称:角色名称,一组能力的标签,不能覆盖对象条件;元能力,结合对象作判断,需要正确对象ID;界面按钮,控制可见入口,不是服务端授权
对象权限与角色名称:关键概念与边界对照。原创知识示意,点击可查看大图。

角色名称:一组能力的标签;不能覆盖对象条件。

元能力:结合对象作判断;需要正确对象ID。

界面按钮:控制可见入口;不是服务端授权。

怎样确认处理到位

不同作者、状态和内容类型的授权矩阵通过,隐藏入口与服务端判断一致;拒绝操作不会改变目标数据。

容易误判的边界

直接按角色字符串授权不适合复杂站点;应在执行操作时核对当前用户对具体对象的能力。

Quellenangaben

官方参考:developer.wordpress.org

返回网站知识,按具体问题继续阅读

Warenkorb
Zum Seitenanfang scrollen
Scannen Sie den QR-Code, um einen Termin zu vereinbaren

1981 Steakhouse (Filiale Haishen)

Vorstellung der Filiale

Vorstellung des „1981 Steakhouse“ (Filiale Haishen)

Scannen Sie den QR-Code, um einen Termin zu vereinbaren

1981 STEAK HOUSE (Filiale Zhihui Shan)

Vorstellung der Filiale

1981 STEAK HOUSE (Filiale Zhihui Shan) – Vorstellung

Scannen Sie den QR-Code, um einen Termin zu vereinbaren

1981 American Barbecue Factory Store

Vorstellung der Filiale

Einführung in den „1981 American Barbecue Factory Store“

Scannen Sie den QR-Code, um einen Termin zu vereinbaren

1981 STEAK HOUSE Steakhaus (Filiale Minyuan)

Vorstellung der Filiale

1981 STEAK HOUSE (Filiale Minyuan) – Vorstellung

Kontaktieren Sie Qunhe – Zheng Borui (Brian)

Kontakt über WeChat

Scannen Sie den QR-Code mit Ihrem Computer; auf dem Handy können Sie den QR-Code durch langes Drücken speichern,
Oder kopieren Sie die WeChat-ID, um mich als Freund hinzuzufügen.

Der echte WeChat-QR-Code von Zheng Borui (Brian)

130 6699 2285 Gleiche WeChat-ID

Sie können uns auch über WhatsApp kontaktieren →