Casbin 是一個用于實現訪問控制策略(Access Control Policy)的 Go 語言庫。要調試 PHP 的 Casbin,你可以使用以下方法:
在初始化 Casbin 時,可以啟用日志記錄功能。這樣,在執行策略檢查時,所有相關的信息都會被記錄到日志文件中。這有助于了解策略檢查的過程和結果。要啟用日志記錄,請在初始化 Casbin 時設置 logger 參數:
use casbin\Enforcer;
use casbin\model\Model;
use casbin\policy\Policy;
$model = new Model("path/to/your/model.conf");
$policy = new Policy("path/to/your/policy.csv");
$enforcer = new Enforcer($model, $policy, ["log_path" => "path/to/your/logfile.log"]);
在初始化 Casbin 時,可以啟用測試模式。這樣,在執行策略檢查時,Casbin 會返回一個布爾值,表示策略檢查是否通過。這有助于快速驗證策略配置是否正確。要啟用測試模式,請在初始化 Casbin 時設置 testing 參數:
use casbin\Enforcer;
use casbin\model\Model;
use casbin\policy\Policy;
$model = new Model("path/to/your/model.conf");
$policy = new Policy("path/to/your/policy.csv");
$enforcer = new Enforcer($model, $policy, ["testing" => true]);
enforce 方法:在執行策略檢查時,可以使用 enforce 方法的第二個和第三個參數來獲取詳細的匹配結果和解釋。這有助于了解策略檢查的具體原因。例如:
use casbin\Enforcer;
use casbin\model\Model;
use casbin\policy\Policy;
$model = new Model("path/to/your/model.conf");
$policy = new Policy("path/to/your/policy.csv");
$enforcer = new Enforcer($model, $policy);
$result = $enforcer->enforce("user1", "resource1", "read");
$explanation = $enforcer->explain("user1", "resource1", "read");
echo "Result: " . ($result ? "Allowed" : "Denied") . "\n";
echo "Explanation: " . $explanation . "\n";
通過這些方法,你可以更好地調試 PHP 的 Casbin,確保訪問控制策略的正確性和有效性。