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.