2013-06-15 2 views
4

Я работаю над cakephp 2.x. моя проблема в том, что я не хочу использовать имя пользователя для ведения журнала. Я беру адрес электронной почты и пароль от пользователя и проверяю это письмо и пароль из базы данных. У меня есть таблица в моей базе данных пользователь и имеет 3 поля идентификатор, электронной и парольИспользование электронной почты вместо имени пользователя в CakePHP Auth Component

вот мой код

Модель

<?php 
class User extends AppModel { 
public $useTable = 'user'; 
} 
?> 

AppController

class AppController extends Controller { 
    public $components = array(
    'Session', 
'Auth'=>array(
    'loginRedirect'=>array('controller'=>'users', 'action'=>'admin'), 
    'logoutRedirect'=>array('controller'=>'users', 'action'=>'admin'), 
    'authError'=>"You can't access that page", 
    'authorize'=>array('Controller') 
    ) 
); 

public function isAuthorized($user) { 
} 

    public function beforeFilter() { 
    $this->Auth->allow('index'); 

UserController

public function login() 
    { 
    if ($this->request->is('post')) { 
     if ($this->Auth->login()) { 
     $this->redirect($this->Auth->redirect()); 
    } else { 
     $this->Session->setFlash('Your email/password combination was incorrect'); 
    } 
} 
} 

login.ctp

<?php 


    echo $this->form->create(); 

    echo $this->form->input('email'); 
    echo $this->form->input('password'); 


    echo $this->form->end('Authenticate'); 
    ?> 

ответ

8

Вы можете настроить его с:

public $components = array(
    'Auth' => array(
     'authenticate' => array(
      'Form' => array(
       'fields' => array('username' => 'email') 
      ) 
     ) 
    ) 
); 

Configuring Authentication handlers Смотрите также в поваренной книге.

+1

извините 2 спросите этот глупый вопрос .. где я должен добавить свой код? или, пожалуйста, если вы можете настроить код в моем коде, чтобы я мог сразу запустить его и сообщить вам о выходе – hellojohn

+0

Это просто новая запись с ключом 'authenticate' в массиве' Auth', который у вас уже есть в вашем 'AppController'. – dhofstet

+0

Мне нужно изменить имя поля в login.ctp от email до 'username'? – hellojohn