Maison développement back-end tutoriel php ThinkPHP3 中APP_GROUP_LIST分组后RBAC无权限有关问题解决方法!

ThinkPHP3 中APP_GROUP_LIST分组后RBAC无权限有关问题解决方法!

Jun 13, 2016 pm 01:09 PM
access and node role user

ThinkPHP3 中APP_GROUP_LIST分组后RBAC无权限问题解决办法!!!

转载请注明出处:http://tyllxx.iteye.com/blog/1693553

今天在官网下的rbac示例,解压出来放到网站根目录,配合TP3.1的框架,运行正常,进入也正常。权限也正常,数据库无问题。
将配置文件改名为config.inc.php,放在App目录下,配置文件中加入
? ?? ???'APP_GROUP_LIST'=>'admin,member',
? ?? ???'DEFAULT_GROUP'=>'',

采用分组后Conf文件夹下新建admin,member文件夹,目录中包含config.php,Conf文件夹下也含config.php(不是原先的),内容如下:
$config=require './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参数

\Lib\Action文件夹下新建admin,member文件夹,复制\Lib\Action文件夹下IndexAction.class.php文件到新建的admin,member两个文件夹中。
\Tpl文件夹下新建admin,member文件夹,复制\Tpl文件夹下Index文件夹到新建的admin,member两个文件夹中。

配置数据库中权限(为了方便测试删除了数据表中原有的权限):

?

以下node表:



?
以下?access表:


?

?

以下role表:


以下role_user表:


按照以上方式配置登录成功,但是提示无权限!

?

?

目前找到的解决办法是:

修改RBAC主文件:\Lib\ORG\Util\RBAC.class.php

其中通过数据库读取level=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
Copier après la connexion

?

其中的:

"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";

?

改为:

?

"where user.user_id='{$authId}' and user.role_id=role.id ?and role.status=1 and access.node_id=node.id and node.level=1 and node.status=1";

?

就可以正确识别分组后的权限。。。。

?

配置文件中

'RBAC_GROUP_NAME'=>'admin,member',

这句话不知道是否有用,未测试。

?

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1663
14
Tutoriel PHP
1266
29
Tutoriel C#
1238
24
Comment utiliser SQL IF Comment utiliser SQL IF Apr 09, 2025 pm 06:12 PM

Les instructions SQL IF sont utilisées pour exécuter conditionnellement les instructions SQL, avec la syntaxe comme: if (condition) alors {instruction} else {instruction} end if;. La condition peut être n'importe quelle expression SQL valide, et si la condition est vraie, exécutez la clause alors; Si la condition est fausse, exécutez la clause ELSE. Si les déclarations peuvent être imbriquées, permettant des contrôles conditionnels plus complexes.

Comment résoudre 'l'erreur de réseau' causée par Vue Axios à travers les domaines Comment résoudre 'l'erreur de réseau' causée par Vue Axios à travers les domaines Apr 07, 2025 pm 10:27 PM

Méthodes pour résoudre le problème du domaine transversal de Vue Axios incluent: Configurer l'en-tête CORS côté serveur à l'aide du proxy Axios à l'aide de JSONP à l'aide de WebSocket à l'aide du plug-in CORS

Comment configurer Zend pour Apache Comment configurer Zend pour Apache Apr 13, 2025 pm 12:57 PM

Comment configurer Zend dans Apache? Les étapes pour configurer Zend Framework dans un serveur Web Apache sont les suivantes: installer Zend Framework et l'extraire dans le répertoire du serveur Web. Créez un fichier .htaccess. Créez le répertoire d'application Zend et ajoutez le fichier index.php. Configurez l'application Zend (application.ini). Redémarrez le serveur Web Apache.

Quels sont les avantages du multithreading en C #? Quels sont les avantages du multithreading en C #? Apr 03, 2025 pm 02:51 PM

L'avantage du multithreading est qu'il peut améliorer les performances et l'utilisation des ressources, en particulier pour traiter de grandes quantités de données ou effectuer des opérations longues. Il permet d'effectuer plusieurs tâches simultanément, améliorant l'efficacité. Cependant, trop de threads peuvent conduire à une dégradation des performances, vous devez donc sélectionner soigneusement le nombre de threads en fonction du nombre de cœurs CPU et de caractéristiques de tâche. De plus, la programmation multi-thread implique des défis tels que les conditions de blocage et de race, qui doivent être résolues à l'aide de mécanismes de synchronisation, et nécessite une connaissance solide de la programmation simultanée, pesant les avantages et les inconvénients et les utilisant avec prudence.

Impossible de se connecter à MySQL en tant que racine Impossible de se connecter à MySQL en tant que racine Apr 08, 2025 pm 04:54 PM

Les principales raisons pour lesquelles vous ne pouvez pas vous connecter à MySQL en tant que racines sont des problèmes d'autorisation, des erreurs de fichier de configuration, des problèmes de mot de passe incohérents, des problèmes de fichiers de socket ou une interception de pare-feu. La solution comprend: vérifiez si le paramètre Bind-Address dans le fichier de configuration est configuré correctement. Vérifiez si les autorisations de l'utilisateur racine ont été modifiées ou supprimées et réinitialisées. Vérifiez que le mot de passe est précis, y compris les cas et les caractères spéciaux. Vérifiez les paramètres et les chemins d'autorisation du fichier de socket. Vérifiez que le pare-feu bloque les connexions au serveur MySQL.

Comment surveiller les performances de Nginx SSL sur Debian Comment surveiller les performances de Nginx SSL sur Debian Apr 12, 2025 pm 10:18 PM

Cet article décrit comment surveiller efficacement les performances SSL des serveurs Nginx sur les systèmes Debian. Nous utiliserons NginxExporter pour exporter des données d'état NGINX à Prometheus, puis l'afficher visuellement via Grafana. Étape 1: Configuration de Nginx Tout d'abord, nous devons activer le module Stub_Status dans le fichier de configuration NGINX pour obtenir les informations d'état de Nginx. Ajoutez l'extrait suivant dans votre fichier de configuration Nginx (généralement situé dans /etc/nginx/nginx.conf ou son fichier incluant): emplacement / nginx_status {Stub_status

Résumé des vulnérabilités de phpmyadmin Résumé des vulnérabilités de phpmyadmin Apr 10, 2025 pm 10:24 PM

La clé de la stratégie de défense de sécurité PHPMYADMIN est: 1. Utilisez la dernière version de PhpMyAdmin et mettez régulièrement à jour PHP et MySQL; 2. Contrôler strictement les droits d'accès, utiliser .htaccess ou le contrôle d'accès au serveur Web; 3. Activer le mot de passe fort et l'authentification à deux facteurs; 4. Sauvegarder régulièrement la base de données; 5. Vérifiez soigneusement les fichiers de configuration pour éviter d'exposer des informations sensibles; 6. Utiliser le pare-feu d'application Web (WAF); 7. Effectuer des audits de sécurité. Ces mesures peuvent réduire efficacement les risques de sécurité causés par le phpmyadmin en raison d'une configuration inappropriée, d'une version antérieure ou de risques de sécurité environnementale, et d'assurer la sécurité de la base de données.

Utilisation de dicr / yii2-google pour intégrer l'API Google dans yii2 Utilisation de dicr / yii2-google pour intégrer l'API Google dans yii2 Apr 18, 2025 am 11:54 AM

VProCSERAZRABOTKIVEB-ENCLOSED, мне démar Leavally umballancefriabancefaumdoptomatification, čtookazalovnetakprosto, kakaožidal.posennesko

See all articles