ホームページ >PHPフレームワーク >ThinkPHP >Thinkphp 6.0 認証プラグイン Think-authz のインストールと使用について

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

藏色散人
藏色散人転載
2020-11-10 14:35:383422ブラウズ

以下は、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 までご連絡ください。