2009-10-05 46 views
5

Tôi đang phát triển một trang web trong cakephp. Tôi muốn cung cấp cho cơ sở để đăng nhập hoặc sử dụng tên người dùng hoặc emailid.Cách đăng nhập bằng Tên người dùng hoặc id email

Tôi đang sử dụng. $ this-> Auth-> fields ['email'] = 'username';

khi đăng nhập thất bại và cố gắng liên kết lại. Nhưng đến giờ tôi vẫn chưa thành công.

Ai có thể đề xuất cho tôi bất kỳ ý tưởng nào khác về điều đó hoặc những gì tôi mất tích. Tôi cũng đã yêu cầu autorediret.

Trả lời

3

Vì bạn có thể thiết lập AuthComponent trong beforeFilter gọi lại, tôi sẽ giả định rằng bạn cũng sẽ có thể làm một số chuyển đổi có:

function beforeFilter() { 
    if (
     isset($this->data['User']['login']) && // login form has been posted 
     Validation::email($this->data['User']['login']) // value looks like an email 
    ) { 
     $this->Auth->fields = array('username' => 'email'); // change the db field 
    } 
} 

Nếu điều này không làm việc, bạn có thể cần phải thử một bộ lọc trước đó, chẳng hạn như beforeRender, vì bạn cần kích hoạt mã của mình trước AuthComponent::startup(). Như một phương sách cuối cùng, bạn có thể extend the AuthComponent:

App::import('Component', 'AuthComponent'); 
class AppAuthComponent extends AuthComponent { 

    function startup() { 
     # your code here 
     parent::startup(); 
    } 
} 
Các vấn đề liên quan