ホームページ >バックエンド開発 >PHPチュートリアル >パーミッションコントロールの考え方_PHPチュートリアル
データベーステーブル構造
リーリーMVC 構造を使用し、URL を通じて対応するモジュール、クラス、関数にアクセスすると仮定します。
テーブルの最初の行は操作を表し、title は操作名を表し、menu_id はそれが属するメニュー オプションを表し、module はモジュール名を表し (見つからない場合は省略できます)、class はクラス名を表し、method は関数名
さらに、ユーザー グループ テーブルも必要です。これはおおよそ次のとおりです:
access_listに保存されている現在のユーザーグループが所有する権限ID(前の権限テーブルのIDに対応)
もちろん、ユーザーグループテーブルに対応するユーザーテーブルも必要です
group_idで表されるユーザーに対応するユーザーグループ
次のような URL にアクセスしたとき:
http://testApp.test.com/index.php/module/testModule/testClass/testAction
ルーティング分析を通じて、対応するデータを取得します。
モジュール->テストモジュール
クラス->テストクラス
関数 -> テストアクション
3 つのパラメーターを使用して、権限テーブル内のデータを検索し、一意の ID 値を取得します。
次に、ユーザー グループの access_list 内のデータを比較します。データにこの ID が含まれている場合、現在のユーザーは現在の操作に対する権限を持っています。それ以外の場合は、権限がありません。
それでは、ユーザーが許可を持っている場合にのみメニューオプションが表示されるように制御するにはどうすればよいでしょうか?
権限テーブル内の各操作は、メニュー オプションである menu_id に対応しているためです。現在のユーザーが属しているユーザー グループ情報を見つけて、そのユーザーが持つ権限操作 ID を取得し、その ID を通じてそのユーザーが属しているメニュー オプションを取得することで、現在のユーザーが所有するメニュー権限を取得します。