安裝:service.php註冊服務,在應用程式的全域公用檔案composer require casbin/think-authz登入後複製
中加入:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">return [
// ...
tauthz\TauthzService::class,];</pre><div class="contentsignin">登入後複製</div></div>
發佈設定檔和資料庫遷移檔案:
php think tauthz:publish
這將自動產生config/tauthz-rbac-model.conf
和
檔案。
執行遷移工具(確保資料庫配置資訊正確
):<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">php think migrate:run</pre><div class="contentsignin">登入後複製</div></div>
這將建立名為
的表。
用法
use tauthz\facade\Enforcer; // adds permissions to a user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // adds a role for a user. Enforcer::addRoleForUser('eve', 'writer'); // adds permissions to a rule Enforcer::addPolicy('writer', 'articles','edit');
// to check if a user has permission if (Enforcer::enforce("eve", "articles", "edit")) { // permit eve to edit articles} else { // deny the request, show an error}
使用Enforcer Api
它提供了非常豐富的
API取得所有角色:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Enforcer::getAllRoles(); // ['writer', 'reader']</pre><div class="contentsignin">登入後複製</div></div>
取得所有的角色的授權規則:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Enforcer::getPolicy();</pre><div class="contentsignin">登入後複製</div></div>
取得某個使用者的所有角色:
Enforcer::getRolesForUser('eve'); // ['writer']
取得某個角色的所有使用者:
Enforcer::getUsersForRole('writer'); // ['eve']
決定使用者是否擁有某個角色:
Enforcer::hasRoleForUser('eve', 'writer'); // true or false
為使用者新增角色:
Enforcer::addRoleForUser('eve', 'writer');
賦予權限給某個使用者或角色:
// to user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // to role Enforcer::addPermissionForUser('writer', 'articles','edit');
刪除使用者的角色:
Enforcer::deleteRoleForUser('eve', 'writer');
刪除某個使用者的所有角色:
Enforcer::deleteRolesForUser('eve');
刪除單一角色:
Enforcer::deleteRole('writer');
刪除某個權限:
Enforcer::deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
刪除某個使用者或角色的權限:
Enforcer::deletePermissionForUser('eve', 'articles', 'read');
刪除某個使用者或角色的所有權限:
// to user Enforcer::deletePermissionsForUser('eve'); // to role Enforcer::deletePermissionsForUser('writer');
取得用戶或角色的所有權限:
Enforcer::getPermissionsForUser('eve'); // return array
決定某個使用者是否擁有某個權限
Enforcer::hasPermissionForUser('eve', 'articles', 'read'); // true or false
更多
API參考Casbin API (https://casbin.org/ docs/en/management-api)。
使用中間件該擴充包帶有一個
Route::get('news/:id','News/Show') ->middleware(\tauthz\middleware\Basic::class, ['news', 'read']);
以上是關於Thinkphp 6.0認證外掛Think-authz的安裝使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!