2010-01-31 3 views
2

J'essaie d'utiliser Security :: allowedControllers et Security :: allowedActions. J'ai donc un contrôleur qui ressemble plus ou moins comme celui-ciCakePHP: using Security :: allowedControllers et Security :: allowedActions

class AppController extends Controller { 
    var $components = array('Security'); //other components 
    //other stuff 
} 

class BookController extends AppController { 
    function beforeFilter() { 
     parent::beforeFilter(); 
     $this->Security->allowedControllers = array('Users'); 
     $this->Security->allowedActions = array('view'); 
     $this->Security->RequireAuth = array('search', 'results'); 
    } 
    //other stuff 
} 

L'action « recherche » affiche une forme, qui a ensuite de résultats »d'appels pour afficher les résultats de la recherche. J'essaie intentionnellement d'être blackholé. Pour ce que je comprends de $ this-> Security-> allowedControllers et $ this-> Security-> allowedActions, je devrais pouvoir obtenir des données POST seulement à partir de l'action 'view' du contrôleur 'Users'. En particulier l'action 'results' devrait me rediriger vers un trou noir, puisqu'il obtient des données POST à ​​partir de l'action 'search' du contrôleur 'Books'.

Mais ce n'est pas le cas. Je peux même faire des demandes de contrôleur croisé, et ne jamais être blackholé, donc je suppose que je n'utilise pas correctement ces variables. Quelle est la bonne façon de déclencher le contrôle des requêtes du contrôleur croisé?

+0

Vous pouvez ajouter la balise « php » à cette question pour attirer plus de téléspectateurs (même si elle est le gâteau très spécifique). –

+0

Et, * totalement * non apparenté :) Je viens de cliquer sur votre page d'accueil, 'Gasse' ne peut pas être abrégé avec' ß' en allemand. Au cas où. –

+0

Merci pour le conseil allemand, je vais le réparer! ;-) – Andrea

Répondre

0

Essayez ceci:

$this->Security->allowedFields = array('Model.fieldname', ...); 

Vous devez ajouter les champs qui ne sont pas dans le modèle aux allowedFields comme je suppose que votre champ Model.search sous la forme.