2011-06-14 3 views
-1

Je suis en train d'éditer un site web que quelqu'un a fait dans CakePHP, mais je n'ai aucune expérience dans Cake. Je suis en train de lire le manuel, mais j'ai du mal à le comprendre, donc je pense que je posterais une question ici pour voir si je peux obtenir des réponses rapides.Système de connexion CakePHP

Je pense que ce code est utilisé pour afficher une boîte de connexion, et vous ne pouvez vous connecter avec test de nom d'utilisateur et mot de passe 123123

var $components = array("Auth", "Acl"); 

function beforeFilter(){ 
    $this->Security->loginOptions = array(
    'type' => 'basic', 
    'realm' => 'Authenticate Emergency Response Center' 
); 
$this->Security->loginCredentials = array(
    'test' => '123123' 
); 
$this->Security->requireLogin(); 
    $this->_bindToSite(); 
    parent::beforeFilter(); 
} 

Je veux que le journal dans la boîte à apparaître encore, mais je veux remplir automatiquement le tableau loginCredentials avec les informations de la base de données. J'ai une table appelée 'opérateurs' qui contient les champs 'user_id' et 'password'.

Quelqu'un pourrait-il me dire comment je modifierais le code ci-dessus pour permettre à l'un des noms d'utilisateur/mots de passe stockés dans la table des opérateurs de se connecter?

Merci pour toute aide

Répondre

1

Construire un tableau à partir de la base de données et de définir $this->Security->loginCredentials égale à votre tableau.

1

Vous pouvez laisser la plus grande partie du dur travail au composant d'authentification de CakePHP, mais si vous voulez utiliser un modèle autre que le 'User' par défaut, il vous suffira de le configurer en beforeFilter(). Le meilleur endroit pour le faire est probablement app_controller.php dans votre répertoire app\.

function beforeFilter(){ 
    $this->Auth->userModel = 'Operator'; 
    $this->Auth->fields = array(
     'username' => 'user_id', 
     'password' => 'password' 
    ); 
);