
permission_callback应按接口动作检查当前请求是否被授权,而不是仅确认参数齐全。公开读取可以明确允许,涉及私有数据或修改则需要身份与能力校验;参数验证、认证和权限判断承担不同职责。
按接口动作拆分访问范围
列出GET、POST、更新和删除分别读取或改变哪些对象,标记哪些资料可公开。一个路由下不同方法可能有不同权限,不能因为首页需要公开读数据,就将同一路由的所有动作统一放行。
区分输入验证与用户授权
参数的类型、必填和格式校验,只能说明请求内容符合接口约定,不代表调用者有权访问。已登录也不等于可修改任意对象。权限回调应结合具体能力和对象归属,必要时区分自己与他人的数据。

不要依赖客户端传来的身份
用户ID、角色名或“管理员”标记若来自请求正文,不能直接作为授权证据。使用WordPress已建立的认证上下文,检查相应能力。输出也应按允许范围筛选,避免公开读取接口无意返回内部字段。
建立拒绝路径的测试
在测试环境分别以匿名、低权限和允许账号调用,不只测试管理员成功的情况。验证未授权请求不泄露私有信息且没有副作用;记录错误码与响应内容。接口能被路由发现并不等于它应该让所有人执行。
关键区别

参数验证:确认输入格式;不是授权判断。
身份认证:确定代表谁;不保证可操作。
权限回调:限制动作与对象;需要服务端执行。
怎样确认处理到位
匿名及低权限请求按设计被拒绝,允许用户仅能作用于约定对象;失败请求没有写入、副作用或多余信息输出。
容易误判的边界
关闭REST发现入口不能替代敏感端点的权限检查。保留正常公开接口,在执行操作前核对认证、对象能力与输入范围,避免一刀切破坏站点功能。
