Skip to content

用户权限检查接口 ​

在 Z-BlogPHP 中调用 $zbp->CheckRights($action) 检查当前用户权限时会触发 Filter_Plugin_Zbp_CheckRights 接口,回调可以接管权限判断结果,实现时段限制、自定义用户组权限等自定义访问控制逻辑。

接口信息 ​

接口参数说明
Filter_Plugin_Zbp_CheckRights$actionZbp 类的检查权限接口(检查当前用户)

完整案例 ​

下例在每天 0 点至 6 点禁止管理员以外的用户进入后台管理页:

php
<?php

RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");

function ActivePlugin_demoAPP()
{
    Add_Filter_Plugin('Filter_Plugin_Zbp_CheckRights', 'demoAPP_Zbp_CheckRights');
}

function demoAPP_Zbp_CheckRights($action, $level = null)
{
    global $zbp;

    if ($action == 'admin' && $level > 1 && (int) date('G') < 6) {
        // 动态设置 RETURN 信号,本次权限检查使用本回调的返回值
        SetPluginSignal('Filter_Plugin_Zbp_CheckRights', __FUNCTION__, PLUGIN_EXITSIGNAL_RETURN);
        return false;
    }
}

注意事项 ​

  • 该接口触发极其频繁:前台浏览、后台操作等几乎所有权限判断都会经过 $zbp->CheckRights(),回调必须严格按 $action 过滤并保持轻量,避免拖慢全站。
  • 实际调用时会同时传入 $action(动作名)与 $level(用户等级)两个参数,回调建议声明为 ($action, $level = null)。
  • 只有回调内动态设置 PLUGIN_EXITSIGNAL_RETURN 信号后返回值才作为本次权限检查的结果,否则系统继续按用户等级与动作所需等级的默认规则判断。
  • 不要在回调中再调用 $zbp->CheckRights(),避免递归死循环。