Neden Auth Bileşen adı & olmaz

5 Cevap php

O Bileşeni AUTH ile benim web sitesi için oturum açma kaydı sayfasını oluşturmak için çalışıyorum, ben, sorunlarla karşı karşıya am

function beforeFilter() {
    $this->Auth->loginAction = array('controller'=>'users','action'=>'login');
    $this->Auth->loginRedirect = array('controller'=>'users','action'=>'landing');
    $this->Auth->logoutRedirect = array('controller'=>'users','action'=>'home');

    // These pages do not require authenication<br/>
    $this->Auth->allow('home','register','activate','forgot','reset','_sendEmail','reset');
}

Ben şifreleyerek ve $this->Auth->password yöntemi kullanarak veritabanında şifreleri depolamak ediyorum, şimdi ben başarıyla Kullanıcıların denetleyici altında açılış sayfasına yönlendirildi dont oturum bile, ben $this->Auth yazdırarak çalıştı ve diyor

[loginError] => Login failed. Invalid username or password.
[authError] => You are not authorized to access that location.

Ayrıca benim veritabanında ben kimlik doğrulaması kullanıyorum hangi karşı alanların e-posta ve şifre, ben AuthComponent automagic çalışması için kullanıcı adı ve şifre olmak üzere alanları gerektirir yerde okumak

Ben de oturum açtıktan sonra, ben yanlış yapıyorum çözemiyorum ben benim tarayıcı işaret çalışırsanız http://cake.localhost/users/register otomatik açılış sayfasına beni yönlendirmek gerekir ama nedense yok.

Ben yanlış gidiyorum nereye kadar herhangi bir ipucu var mı?

Shiv

5 Cevap

CakePHP yemek kitabı:

Varsayılan olarak, AuthComponent Eğer alanlar ile 'kullanıcılar' olarak adlandırılan bir tablo 'kullanıcı adı' ve kullanılacak 'şifre' denilen var bekliyor.

Ben size alan adı olarak email kullanıyorsanız automagic çalışacak acaba?

Lütfen beforeFilter bu eklemeyi deneyin:

function beforeFilter() {
    $this->Auth->fields = array(
        'username' => 'email', 
        'password' => 'password'
    );
}

Deneyin $ this-> Auth-> allowedActions = array ('*'); Kontrolörün beforeFilter in () (değil app_controller olarak).

Ben bu çözüldü ve bu gerçekten kesmek yolu benim denetleyicisi yöntemi Igiriş ben ayarlamak, sonra password2 için form alanını yeniden adlandırıldı oldu


$this->data['password] = $this->data['password2]

Sonra aradım


$this->Auth->login($this->data)

and it seemed to work. I dont think this is the best way, however it worked and I will go with it till I find a better solution.

Lütfen app_controller.php yılında

function beforeFilter() {
    $this->Auth->fields = array( 'username' => 'email', 'password' => 'password' );
    $this->Auth->loginAction = array('controller'=>'users','action'=>'login');
    $this->Auth->loginRedirect = array('controller'=>'users','action'=>'landing');
    $this->Auth->logoutRedirect = array('controller'=>'users','action'=>'home');
}

Kullanıcıların denetleyicisi:

function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(list of your allowed actions);
}

CakePHP 1.2 kullanıyorsanız, değiştirmek gerekir:

$this->Auth->allow('home','register','activate','forgot','reset','_sendEmail','reset');

karşı

$this->Auth->allow(array('home','register','activate','forgot','reset','_sendEmail','reset'));

Izin fonksiyonu ekledi "dizi ()" dikkat edin.