ThinkPHP の RBAC (ロールベースのアクセス制御) の詳細な分析_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:06:46
オリジナル
1273 人が閲覧しました

1. RBAC とは
ロールベースのアクセス制御 (ロールベースのアクセス制御) は、従来のアクセス制御 (任意アクセス、必須アクセス) の有望な代替手段として広く注目されています。
RBAC では、権限はロールに関連付けられており、ユーザーは適切なロールのメンバーになることで、それらのロールから権限を取得します。これにより、アクセス許可の管理が大幅に簡素化されます。
組織では、さまざまなタスクを完了するためにロールが作成され、ユーザーには責任と資格に基づいて対応するロールが割り当てられます。ユーザーは、あるロールから別のロールに簡単に割り当てることができます。新しい要件とシステム統合に基づいてロールに新しいアクセス許可を付与でき、必要に応じてロールからアクセス許可を再利用することもできます。より広範囲の客観的状況を包含するように、キャラクター間の関係を確立することができます。

2. ThinkPHPのRBAC
まず、公式の例で使用されているデータテーブルを見てください。定義は次のとおりです:
RBACは5つのデータテーブル
think_user(ユーザーテーブル)を使用します。 think_role(ユーザーグループテーブル)
think_node(オペレーションノード)
think_role_user(ユーザーとユーザーグループの対応)
think_access(各オペレーションとユーザーグループの対応)

ユーザーテーブル

ロールテーブル、どのようなロールが存在するか、このロールは対応するユーザーID userに関連付けられています

対応するロール ID はユーザー テーブルの ID に従って与えられます。つまり、ユーザー ID が 3 のロールは 2 です。ロール ロール テーブルによれば、7 はユーザーに割り当てられます。従業員の役割

アクセステーブル、権限テーブル、例えば、ロールIDは従業員の権限である2で、対応するノードが使用可能です


ノード テーブルはアプリケーション-モジュール-モジュールのメソッドを表し、それらの間の関係を定義します。たとえば、noteid 30 は Public モジュール、noteid 31、32、33、34 はメソッド add です。挿入、編集、更新はすべてパブリックに属します。 noteid 85 のテスト メソッドは、noteid 84 の Game モジュールの下のメソッドに属します。

3. config 設定ファイルの詳細な説明
thinkphp の公式サンプルの設定ファイルを見てみましょう:

コードをコピーします コードは次のとおりです:- 'USER_AUTH_TYPE' 'USER_AUTH_TYPE' =>1, 'USER_AUTH_TYPE' //デフォルトの認証タイプ 1 ログイン認証 2 リアルタイム認証 2 'user_auth_key' = & gt; 'authid', // ユーザー認証セッションラベル
'admin_auth_key' = & gt; 'administrator',
'user_auth_model' = & gt; 'user', // デフォルト検証データテーブル 'auth_pwd_encoder' = & gt; 'user_auth_gateway' = & gt; '/public/login', // デフォルトの認証ゲートウェイ = & Gt; // デフォルトは認証する必要はありません。 g 'guest_auth_on' = & gt; false, // 観光客のアクセスを許可するかどうか
'guest_auth_id' = & gt; // 観光客 ID のユーザー 'db_like_fields' = & gt;' 'Rbac_role_table '= & Gt;' Think_role '、
' rbac_user_table '= & gt;'、
' rbac_access_table '= & gt;' think_node '、
' show_page_trace '= & gt; / /デバッグ情報を表示します
);


コメントを読めばほとんどのことが理解できるはずです。パブリック モジュールには認証が必要ありません。ログインする前に全員がゲストであるため、ログイン ページにもアクセスできるようになります。そう、ははは。デフォルト ゲートウェイ アドレスは、認証が失敗し、ここにジャンプして再度ログインする権限がないことを意味します。 ADMIN_AUTH_KEY はスーパー管理者権限を表します。ユーザー テーブルに admin という名前のユーザーを作成した場合、このユーザーにすべての権限を割り当てる必要はありません。なぜなら、間違った権限を割り当てると、システム権限が混乱し、誰もがアクセスできなくなる可能性があるためです。このとき、スーパー管理者が来ます。

4. RBAC クラスのいくつかの重要なメソッド
authenticate($map,$model=”) メソッドは、ユーザーとユーザー テーブルの MODEL をクエリするための条件を渡し、ユーザーの情報を含む配列を返します
saveAccessList($authId= null) メソッドを使用してユーザーの ID を渡します。このメソッドは値を返しませんが、$_SESSION['_ACCESS_LIST'] の値を設定するだけです。これには、ユーザーに対応するユーザー グループには、['プロジェクト名']['モジュール名']['操作名'] を操作する権限があります。今後、権限の決定は、現在のプロジェクト、モジュール、および操作が実行できるかどうかを決定します。 $_SESSION['_ACCESS_LIST'] で見つかります
checkAccess() メソッドは現在のモジュールと操作を検証する必要があるかどうかを検出します bool 型を返します
checkLogin() メソッドはログインを検出します
AccessDecision($appName=APP_NAME) メソッドは次のとおりです現在のプロジェクト モジュールの操作が $_SESSION['_ACCESS_LIST'] 配列内にあるかどうか、つまり $_SESSION[ '_ACCESS_LIST'] 内にあるかどうかを検出します $_SESSION['_ACCESS_LIST']['Current Operation']['Current Module']['Current Operation'] が存在する場合は、権限があることを意味します。
getAccessList($authId) メソッド クエリによって権限リスト $_SESSION['_ACCESS_LIST'] の値を返します。データベース

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327598.html技術記事 1. RBAC とは何ですか? 役割ベースのアクセス制御は、従来のアクセス制御 (任意アクセス、必須アクセス) の有望な代替手段として広く注目されています。 ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート