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'=>'管理者,メンバー',
この文が役立つかどうかはわかりません。テストされていません。
?