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 の公式サンプルの設定ファイルを見てみましょう:
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'] の値を返します。データベース