Qunhe Network · Servicios tecnológicos y de diseño para empresas
Teléfono130 6699 2285El mismo número en WeChat

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

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

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

先明确操作与目标对象

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

理解元能力的映射

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

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

界面隐藏不是权限检查

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

用不同对象建立测试矩阵

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

关键区别

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

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

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

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

怎样确认处理到位

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

容易误判的边界

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

Bibliografía

官方参考:developer.wordpress.org

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

Cesta de la compra
Ir al inicio de la página
Escanea el código para reservar

Restaurante de carnes 1981 (sucursal de Hisense)

Presentación de la tienda

Descripción del restaurante de carnes 1981 (sucursal de Hisense)

Escanea el código para reservar

1981 STEAK HOUSE (sucursal de Zhihui Shan)

Presentación de la tienda

Descripción de 1981 STEAK HOUSE (sucursal de Zhihui Shan)

Escanea el código para reservar

Tienda de barbacoa al estilo americano de 1981

Presentación de la tienda

Descripción de la tienda «1981 American Barbecue Factory»

Escanea el código para reservar

1981 STEAK HOUSE (sucursal de Minyuan)

Presentación de la tienda

Descripción de 1981 STEAK HOUSE (sucursal de Minyuan)

Ponte en contacto con Qunhe · Zheng Borui (Brian)

Contacto por WeChat

Escanea el código con el ordenador; en el móvil, mantén pulsado para guardar el código QR,
O copia el ID de WeChat para añadirlo como amigo.

El código QR auténtico de WeChat de Zheng Borui (Brian)

130 6699 2285 El mismo número en WeChat

También puedes ponerte en contacto a través de WhatsApp →