0

「company」、「employee」、「password」の 3 つのフィールドを持つ基本的なログイン フォームを作成しました。デフォルトの Auth コンポーネントを使用してみました。

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
        }
    }
}

しかし、これはデフォルトの「ユーザー名」および「パスワード」フィールドを解析するため、ログインできません。3 つのフィールドを検証してログインするように認証機能を変更するにはどうすればよいですか?

これが初心者の質問である場合は申し訳ありません。 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.htmlを読みましたが、何も役に立ちませんでした。

4

1 に答える 1

1

次のことを試してください。

public function beforeFilter() {
    $this->Auth->authenticate = array(
        'Form' => array(
            'fields' => array(
                'username' => 'employee', 
            ),
        ),
    );
}

public function login() {
    if ($this->request->is('post')) {
        $this->Auth->authenticate['Form']['scope'] = array(
            'User.company_id' => $this->request->data['User']['company_id'],
            // or however this condition needs to be setup as
        );
        if ($this->Auth->login()) {
             // login success
        } else {
             // login fail
        }
    }
}

基本的には、3 番目の条件をスコープとして追加します。

于 2012-06-14T05:02:11.293 に答える