首頁 > php框架 > ThinkPHP > 主體

關於Thinkphp 6.0認證外掛Think-authz的安裝使用

藏色散人
發布: 2020-11-10 14:35:38
轉載
3366 人瀏覽過

安裝

此擴充功能需要PHP 7.1 和ThinkPHP 6.0 ,針對TP 5.1 請使用Think-Casbin .

使用

composer
安裝:

composer require casbin/think-authz
登入後複製
註冊服務,在應用程式的全域公用檔案
service.php

中加入:<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

config/tauthz.php

檔案。

執行遷移工具(確保資料庫配置資訊正確):<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>這將建立名為

rules

的表。

用法

快速開始#安裝成功後,可以這樣使用:

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

#,以促進對Policy 的各種操作:

取得所有角色:<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)。

使用中間件該擴充包帶有一個

\tauthz\middleware\Basic::class

中間件:
Route::get('news/:id','News/Show')
    ->middleware(\tauthz\middleware\Basic::class, ['news', 'read']);
登入後複製

以上是關於Thinkphp 6.0認證外掛Think-authz的安裝使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!