"Enter"a basıp içeriğe geçin

Yii2 veritabanından kullanıcı girişi

yii2 ilk kurduğumuzda models/User.php dosyasında tanımlı 2 adet kullanıcıyla giriş imkanı sağlamakta. Kendi veritabanımızı oluşturmak ve buradaki kullanıcılarla giriş yapılmasını istememiz en temel ve en olası istektir.

Bunun için aşağıdaki düzenlemeleri yapmamız yeterli olacaktır.

2

Yukarıdaki şekilde veritabanımızı oluşturuyoruz. Ben tablo adına backend_user diyorum.

Daha sonra gii arayüzünden modelimizi oluşturuyoruz.

gii

gii2

gii3

Generate tuşuna basıldığında model dosyamız oluşturulmuş olacak.(Dosyaya yazma izni olması gerekiyor.)

Model/BackendUser.php dosyasının altına class parantezlerinin içine gelecek şekilde aşağıdaki kodları ekliyoruz.

public static function findIdentity($id)
    {
        return static::findOne($id);
    }
    public static function findIdentityByAccessToken($token, $type = null)
    {
       // return static::findOne([‘access_token’ => $token]);
        throw new \yii\base\NotSupportedException();
    }
    public function getId()
    {
        return $this->id;
    }
    public function getAuthKey()
    {
        return $this->authKey;
    }
    public function validateAuthKey($authKey)
    {
        return $this->authKey === $authKey;
    }
    public static function findbyUserName($username)
    {
        return self::findOne([‘username’=>$username]);
    }
    public function validatePassword($password)
    {
        return $this->password === $password;    
    }

Daha sonra models/LoginForm.php içine giriyoruz ve getUser() fonksiyonu içindeki

$this->_user = User::findByUsername($this->username);  satırını

$this->_user = BackendUser::findByUsername($this->username);   şeklinde değiştiriyoruz.

Son olarak da config/web.php dosyası içindeki component in user arrayında  identityClass değerine BackendUser bilgisini giriyoruz.

‘user’ => [
            ‘identityClass’ => ‘app\models\BackendUser‘,
            ‘enableAutoLogin’ => true,
            ‘enableSession’ => true,
        ],

Tüm bunlardan sonra girişde sorun yaşarsak BackendUser.php model dosyasının sınıfının

class BackendUser extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface

şeklinde düzenlenemek gerekecektir.

Şimdi veritabanında oluşturduğumuz kayıtlarla giriş yapabiliriz.

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.