2010-12-12 9 views

Répondre

3

Je suis d'accord. Parfois, il est préférable de gérer les autorisations dans votre couche d'application que dans la couche de base de données. Cependant, si vous vraiment, vraiment voulez avoir cette couche supplémentaire de sécurité dans votre base de données ainsi, alors vous devez configurer les connexions de base de données multiples:

var $default = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'normaluser', 
    'password' => '', 
    'database' => 'db', 
    'prefix' => '', 
); 

var $admin = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'adminuser', 
    'password' => '', 
    'database' => 'db', 
    'prefix' => '', 
); 

Vous pouvez ensuite utiliser $this->ModelName->setDataSource('admin') si l'utilisateur est en section admin, ou toute autre condition que vous pourriez imposer.

Je vous suggère de regarder le routage de préfixe admin_. CakePHP vous permet de gérer les pouvoirs d'administration assez facilement. Prefix Routing En outre, vous pouvez ajouter un champ dans la table des utilisateurs pour indiquer le rôle de l'utilisateur et le comparer au préfixe en cours.

0

la solution la plus robuste sera probablement la mise en place des listes de contrôle d'accès (ACL). Cela vous permettra de déléguer des autorisations en fonction d'un rôle d'utilisateur que vous désignez. Par exemple, admin a un ID de groupe de 1 et les utilisateurs ont un ID de groupe de 2. Vous pouvez ensuite autoriser les administrateurs à accéder à certaines opérations de votre application Web.

Voici la documentation du gâteau sur cette fonctionnalité. http://book.cakephp.org/view/1242/Access-Control-Lists