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.
Yukarıdaki şekilde veritabanımızı oluşturuyoruz. Ben tablo adına backend_user diyorum.
Daha sonra gii arayüzünden modelimizi oluşturuyoruz.
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