Projekt z wykorzystaniem yii2 - część X.
W poprzednim wpisie określiliśmy klasę jaka jest odpowiedzialna za logikę logowania oraz interfejs jaki będziemy wykorzystywać. Z procesem logowania związanych jest bezpośrednio kilka plików:
app\models\User.php – z klasą User,
app\models\LoginForm.php – z walidacją formularza,
app\controllers\SiteController.php – z akcjami Login oraz Logout,
app\views\site\login.php – z formularzem logowania.
Po instalacji frameworka możemy zalogować się do aplikacji przy pomocy hasła i loginu znajdującego się w tablicy umieszczonej w pliku User.php. Tą sytuację chcemy zmienić i nasze dane (hasło, login) przechowywać w bazie danych w tablicy user. Generalnie zmianie ulegnie klasa User. Jest to związane z tym, że od tej pory będziemy korzystali z bazy danych. Dlatego też ta klasa musi być rozszerzeniem klasy ActiveRecord. Ponadto niektóre metody muszą być dostosowane do korzystania z naszej tabeli user przez zastosowanie metody findOne z odpowiednimi parametrami.
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
class User extends ActiveRecord implements IdentityInterface
{
public static function tableName() {
return 'user';
}
public static function findIdentity($id)
{
return static::findOne(['id'=>$id]);
}
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token'=>$token]);
}
public static function findByUsername($username)
{
return static::findOne(['username'=>$username]);
}
public function getId()
{
return $this->getPrimaryKey();
}
public function getAuthKey()
{
return $this->auth_key;
}
public function validateAuthKey($authKey)
{
return $this->getAuthKey() === $authKey;
}
public function validatePassword($password)
{
return Yii::$app->security->validatePassword($password,$this->password_hash);
}
public function setPassword($password)
{
$this->password_hash = Yii::$app->security->generatePasswordHash($password);
}
public function generateAuthKey()
{
$this->auth_key = Yii::$app->security->generateRandomString();
}
}
Po dokonanych zmianach i umieszczeniu hasła (haszowane metodą bycrypt) oraz loginu w bazie możemy przetestować aplikację.
Utworzone pliki można zobaczyć na githubie pod adresem projektu: Projekt menu: klasa User
Tablica $users w klasie User.
Testowanie logowania.
2018-02-07 Ator: bronco-one
Projekt z wykorzystaniem yii2 - część X.
W poprzednim wpisie określiliśmy klasę jaka jest odpowiedzialna za logikę logowania oraz interfejs jaki będziemy wykorzystywać. Z procesem logowania związanych jest bezpośrednio kilka plików:
app\models\User.php – z klasą User,
app\models\LoginForm.php – z walidacją formularza,
app\controllers\SiteController.php – z akcjami Login oraz Logout,
app\views\site\login.php – z formularzem logowania.
Po instalacji frameworka możemy zalogować się do aplikacji przy pomocy hasła i loginu znajdującego się w tablicy umieszczonej w pliku User.php. Tą sytuację chcemy zmienić i nasze dane (hasło, login) przechowywać w bazie danych w tablicy user. Generalnie zmianie ulegnie klasa User. Jest to związane z tym, że od tej pory będziemy korzystali z bazy danych. Dlatego też ta klasa musi być rozszerzeniem klasy ActiveRecord. Ponadto niektóre metody muszą być dostosowane do korzystania z naszej tabeli user przez zastosowanie metody findOne z odpowiednimi parametrami.
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
class User extends ActiveRecord implements IdentityInterface
{
public static function tableName() {
return 'user';
}
public static function findIdentity($id)
{
return static::findOne(['id'=>$id]);
}
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token'=>$token]);
}
public static function findByUsername($username)
{
return static::findOne(['username'=>$username]);
}
public function getId()
{
return $this->getPrimaryKey();
}
public function getAuthKey()
{
return $this->auth_key;
}
public function validateAuthKey($authKey)
{
return $this->getAuthKey() === $authKey;
}
public function validatePassword($password)
{
return Yii::$app->security->validatePassword($password,$this->password_hash);
}
public function setPassword($password)
{
$this->password_hash = Yii::$app->security->generatePasswordHash($password);
}
public function generateAuthKey()
{
$this->auth_key = Yii::$app->security->generateRandomString();
}
}
Po dokonanych zmianach i umieszczeniu hasła (haszowane metodą bycrypt) oraz loginu w bazie możemy przetestować aplikację.
Utworzone pliki można zobaczyć na githubie pod adresem projektu: Projekt menu: klasa User

Tablica $users w klasie User.

Testowanie logowania.
2018-02-07 Ator: bronco-one