ThinkPHP3でAPP_GROUP_LISTをグループ化した後にRBACが許可されない問題の解決策!

WBOY
リリース: 2016-06-13 13:09:43
オリジナル
964 人が閲覧しました

ThinkPHP3 で APP_GROUP_LIST グループ化後に RBAC が許可されない問題の解決策! ! !

転載する場合は出典を明記してください: http://tyllxx.iteye.com/blog/1693553

公式 Web サイトにある今日の rbac の例を、解凍して Web サイトのルート ディレクトリに置きます。TP3.1 フレームワークでは、正常に動作し、正常に入力できます。権限は正常であり、データベースに問題はありません。
設定ファイルの名前を config.inc.php に変更し、App ディレクトリに配置し、
? ??'APP_GROUP_LIST'=> ; 'admin,member',
? ?? 'DEFAULT_GROUP'=>'',

グループ化を使用した後、Conf フォルダーの下にあります。新しい admin フォルダーと member フォルダーを作成します。このディレクトリには config.php (元のフォルダーではありません) も含まれます。内容は次のとおりです。 ./App/config.inc.php';
$array=array();
return array_merge($config,$array);
転載してください 出典を示してください: http://tyllxx.iteye.com/blog/1693553?CommonAction ファイル:

if (!RBAC::AccessDecision(GROUP_NAME) ) {/ /GROUP_NAME パラメーターを追加します。
LibAction フォルダーの下に新しい管理フォルダーとメンバー フォルダーを作成し、LibAction フォルダーの下にある IndexAction.class.php ファイルを新しく作成した管理者とメンバーにコピーします。フォルダー。

Tpl フォルダーの下に新しい admin フォルダーと member フォルダーを作成し、Tpl フォルダーの下にある Index フォルダーを新しく作成した admin フォルダーと member フォルダーにコピーします。
データベース内のアクセス許可を構成します (データ テーブル内の元のアクセス許可は、テストの都合上削除されます):

?

次のノードテーブル:

?
次のアクセス テーブル:


?

?

次の役割テーブル:


次の role_user テーブル:


上記の設定に従ってログインに成功しましたが、権限がないというメッセージが表示されます。

?

?

これまでに見つかった解決策は次のとおりです:

RBAC メイン ファイルを変更します: LibORGUtilRBAC.class.php

レベル=1 のデータをデータベース経由で読み取ると、一致する値が見つからず、権限の問題が発生します。

質問文:

?

?

?

        $db     =   Db::getInstance(C('RBAC_DB_DSN'));
        $table = array('role'=>C('RBAC_ROLE_TABLE'),'user'=>C('RBAC_USER_TABLE'),'access'=>C('RBAC_ACCESS_TABLE'),'node'=>C('RBAC_NODE_TABLE'));
        $sql    =   "select node.id,node.name from ".
                    $table['role']." as role,".
                    $table['user']." as user,".
                    $table['access']." as access ,".
                    $table['node']." as node ".
                    "where user.user_id='{$authId}' and user.role_id=role.id and ( access.role_id=role.id  or (access.role_id=role.pid and role.pid!=0 ) ) and role.status=1 and access.node_id=node.id and node.level=1 and node.status=1";
        $apps =   $db->query($sql);
转载请注明出处:http://tyllxx.iteye.com/blog/1693553
ログイン後にコピー
そのうち:

"where user.user_id='{$authId}' および user.role_id=role.id および

( access.role_id=role.id ?または (access.role_id=role.pid および role.pid! =0 ) )

、role.status=1、access.node_id=node.id、node.level=1、node.status=1";

?

に変更されました

?

"ここで user.user_id='{$authId}' および user.role_id=role.id ?および role.status=1 および access.node_id=node.id および node.level=1 および node.status=1 ";

?

グループ化された権限を正しく識別できます。 。 。 。

?

設定ファイル内

'RBAC_GROUP_NAME'=>'管理者,メンバー',

この文が役立つかどうかはわかりません。テストされていません。

?

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