1

Cake から提供されたハッシュを使用してユーザーを作成しました。しかし、ログインしようとすると、「無効なユーザー名またはパスワード」と表示されます。でも大丈夫です。

$this->Auth->login();常に false を返します...

クロノローラー

class MastersController extends AppController{

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

AppController

class AppController extends Controller {

    public $components = array('Session', 'Cookie', 'Auth');
    function beforeFilter() {
        $this->loadModel('Master');

        $this->Auth->userModel = 'Master';
        $this->Auth->allow('*');
        // Action da tela de login
        $this->Auth->loginAction = array(
                'masters' => false,
                'controller' => 'masters',
                'action' => 'login'
        );

        // Action da tela após o login (com sucesso)
        $this->Auth->loginRedirect = array(
                'masters' => true,
                'controller' => 'masters',
                'action' => 'index'
        );

        // Action para redirecionamento após o logout
        $this->Auth->logoutRedirect = array(
                'masters' => false,
                'controller' => 'pages',
                'action' => 'login'
        );
        $this->Auth->authorize = array('controller');
        if (!isset($this->params['masters']) || !$this->params['masters'])
            $this->Auth->allow('*','login');

        $this->Auth->loginError = __('Usuário e/ou senha incorreto(s)', true);
        $this->Auth->authError = __('Você precisa fazer login para acessar esta página', true);
    }

    public function isAuthorized($masters){
        return TRUE;
    }}

login.ctp を表示

 echo 'Formulário de login';
echo $this->Session->flash('auth');
echo $this->Session->flash();
echo $this->Form->create('Master', array('controller'=>'masters','action'=>'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Entrar');

モデル

class Master extends AppModel{
public $name = 'Master';
public $validate = array(
    'username' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Usuario requerido.'
        )
    ),
    'password' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Senha requerida.'
        )
    )
);

public function beforeSave($options = array()) {
    if (isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
    }
    return true;
}

なぜこのエラーが発生するのかわかりません..これはすべて問題ないようです! 彼が尋ねたように、Security.saltの1文字を変更しました..助けてください:)仕事に必要です

4

2 に答える 2

0

私は同じ問題を抱えていましたが、それを修正したのは $this->alias を User に変更したため、beforeSave() は次のようになりました

public function beforeSave($options = array()) {
    if (isset($this->data['User']['password'])) {
        $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']);
    }
    return true;
}
于 2014-12-14T08:38:02.940 に答える