2009-12-10 6 views
3

Je construis un site avec CakePHP que je voudrais avoir 3 sections:CakePHP Authentification avec routage préfixe

  • zone publique
  • zone utilisateur
  • zone admin

I 'ai configuration préfixe routage dans les routes.php qui ressemble à

Router::connect('/user/:controller/:action/*', array('prefix' => 'user', 'user' => true)); 
Router::connect('/admin/:controller/:action/*', array('prefix' => 'admin', 'admin' => true)); 

Je le veux donc toutes les actions avec le préfixe user_ redirigeront vers un écran de connexion si pas déjà connecté et le type d'utilisateur est 'normal' (question secondaire: un utilisateur peut être normal: P) et toute action avec préfixe admin redirigera également mais nécessitent un type d'administrateur.

J'ai commencé à essayer d'utiliser le composant Auth, mais il semble assez inflexible alors que le langage ACL semble être top. Quelqu'un pourrait-il offrir quelques conseils sur la meilleure façon d'obtenir ce que je veux?

Répondre

7

Le composant Auth doit être suffisamment flexible pour cela.

Vous pourriez faire un beforeFilter() comme ceci:

// I think it's params['prefix'], might be different 
//    vvvvvvvvvvvvvvvv 
if (isset($this->params['prefix'])) { 
    $this->Auth->userScope = array('User.type' => $this->params['prefix']); 
} 

Vous pouvez également ajouter des fonctions à isAuthorized() soit votre modèle ou contrôleur sur une base au besoin pour effectuer une authentification encore plus avancée. Voir http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Authentication.html#authcomponent-variables.

+0

Merci beaucoup deceze - juste l'aide dont j'avais besoin. – gacrux

+0

BTW $ this-> params ['préfixe'] avait raison – gacrux

Questions connexes