Yanlış bir giriş yaptıktan sonra CakePHP kimlik kırılma

2 Cevap php

Ben basit bir giriş formu, kullanıcı adı ve şifre var. Bir kullanıcı web sitesinde herhangi bir yerde olduğu zaman, temelde, o giriş sayfasına onu alacak bir bağlantıyı tıklayabilirsiniz. Oturum açtıktan sonra, o ilk geldiği sayfasına yönlendirilir.

Sorun:

let's say I was in the "/posts" page, ve I clicked to login, so now I am on "/users/login". - if the login is correct, or the login is incorrect ve nothing is filled in the userisim textbox, everything works as expected (if it's correct I am redirected back to "/posts" otherwise I receive the "wrong userisim or password" message, I try to login again correctly ve then I am redirected to "/posts";

  • giriş yanlış ve bazı metin kullanıcı adı metin kutusuna dolu ise, giriş yaptıktan sonra ben iyi bir "yanlış kullanıcı adı veya şifre" mesajı alırsınız, ama ben yine olursa olsun formu doldurunuz eğer o doğru veya wheather Ben "O konuma erişmek için yetkiniz yok." alamadım Ben üçüncü kez, giriş işleri için oturum açmaya çalıştığınızda, ama ben bir oturumda depolanan yönlendirme sayfası için değer (yerine "/ mesaj" of "/ users / mesaj" yönlendirildi ise, / "hala mesaj ").

Bu kodu:

    function beforeFilter () {
        pvardırnt::beforeFilter(); 
        $this->Auth->allowedActions = array( 'confirmation');

        $this->Auth->fields = array(
            'userisim' => 'usr_userisim', 
            'password' => 'usr_password'
        );
        $this->Auth->userScope = array('User.usr_confirmed' => 1);

        if($this->action == 'signup') {  
            $this->Auth->authenticate = $this->User;  
        }
    }

function login () {
    if ( $this->Auth->user() ) {
        $this->redirect($this->Session->read('page'));
        exit();
    } 
}

function logout () {
    $this->Session->destroy('userisim');
    $this->redirect('/');
    exit();
}

2 Cevap

Form eylem Kısıtlı bir alana yönlendiriliyor gibi geliyor. form action özniteliğini denetleyin.

app/views/layouts/default.ctp oturumu hata ayıklama yardımcı altındaki bu koyun:

<?php debug($session->read()); ?>

Eğer oturum açtığınızda Auth.User anahtar bilgisi ile dolu olacak, ama daha da önemlisi, Auth.redirect tuşuna ziyaret son kısıtlı sayfanın URL'sini içeren edecek, nerede bu {[olduğunu Eğer oturum kez yönlendirme üzerine (2)]} planları

Eğer senin oturumun page anahtarı sınırlı bir sayfanın URL'sini depolamak?

Eğer öyleyse, AuthComponent onun Auth.redirect tuşu ile zaten işlevsellik sağlayabilir. Yapmanız gereken tüm kısıtlı sayfanın yerine giriş sayfasına link ve AuthComponent otomatik olarak bu anahtarı doldurmak ve giriş yaptıktan sonra yönlendirme idare edecek.

echo $html->link('Login', array('controller' => 'users', 'action' => 'profile'));

Değilse, o zaman neden bunun yerine anahtarını doldurmamak düşünmüyoruz. AuthComponent zaten denetler ve bu anahtarın üzerinde hareket yana, bazı ücretsiz işlevsellik kazanmak olabilir.

Her halükarda, burada özel bir login yöntem durumda neye bakmak gerekir, ancak yukarıda tavsiye herhangi bir iş eğer o zaman sadece hep birlikte login yöntemi bırakabilirsiniz ve varsayılan işlevselliğini kullanın:

function login () {
    // log the user in
    if ($this->Auth->login()) {
        // your session redirect
        if ($this->Session->read('page')) {
            $this->redirect($this->Session->read('page'));
        }
        // auth's session redirect
        if ($this->Session->read('Auth.redirect')) {
            $this->redirect($this->Session->read('Auth.redirect'));
        }
        // default redirect
        $this->redirect($this->Auth->loginRedirect);
    }
}