Thinkphp 6.0 認証プラグイン Think-authz のインストールと使用について

藏色散人
リリース: 2020-11-10 14:35:38
転載
3396 人が閲覧しました

以下は、ThinkPHP 6.0 認証プラグイン Think-authz を紹介する ThinkPHP チュートリアル コラムです。困っている友人の役に立てば幸いです。 !

インストール

この拡張機能には PHP 7.1 および ThinkPHP 6.0 が必要です。TP 5.1 の場合は、Think-Casbin を使用してください。

composerインストールを使用します:

composer require casbin/think-authz
ログイン後にコピー

サービスを登録し、アプリケーションのグローバル パブリック ファイルに追加します service.php:

return [
    // ...

    tauthz\TauthzService::class,];
ログイン後にコピー

設定ファイルを公開し、データベース移行 ファイル:

php think tauthz:publish
ログイン後にコピー

これにより、config/tauthz-rbac-model.conf ファイルと config/tauthz.php ファイルが自動的に生成されます。

移行ツールを実行します (データベース構成情報が正しいことを確認してください):

php think migrate:run
ログイン後にコピー

これにより、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}
ログイン後にコピー

Use Enforcer Api

これは、## を容易にするための非常に豊富な API を提供します。 #Policy の各種操作:

すべてのロールの取得:

Enforcer::getAllRoles(); // ['writer', 'reader']
ログイン後にコピー
すべてのロールの認可ルールの取得:

Enforcer::getPolicy();
ログイン後にコピー
ユーザーのすべてのロールの取得:

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
ログイン後にコピー
More

API Casbin API (https://casbin.org/) を参照してください。 docs/en/management-api)。

ミドルウェアの使用

この拡張機能パッケージには、

\tauthz\middleware\Basic::class middleware:

Route::get('news/:id','News/Show')
    ->middleware(\tauthz\middleware\Basic::class, ['news', 'read']);
ログイン後にコピー
が付属しています。

以上がThinkphp 6.0 認証プラグイン Think-authz のインストールと使用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート