Monthly Archives: December 2018

ایجاد صفحه لاگین در فریمورک yii قسمت سوم

ایجاد یک model جدید به نام user

در فولدر models یک فایل جدید به نام User.php ایجاد کنید و کد زیر را داخل آن بنویسید

این قطعه کد توسط سایت رسمی فریمورک yii معرفی شده است

<?php

use yii\db\ActiveRecord;
use yii\web\IdentityInterface;

class User extends ActiveRecord implements IdentityInterface
{
    public static function tableName()
    {
        return 'user';
    }

    /**
     * Finds an identity by the given ID.
     *
     * @param string|int $id the ID to be looked for
     * @return IdentityInterface|null the identity object that matches the given ID.
     */
    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    /**
     * Finds an identity by the given token.
     *
     * @param string $token the token to be looked for
     * @return IdentityInterface|null the identity object that matches the given token.
     */
    public static function findIdentityByAccessToken($token, $type = null)
    {
        return static::findOne(['access_token' => $token]);
    }

    /**
     * @return int|string current user ID
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string current user auth key
     */
    public function getAuthKey()
    {
        return $this->auth_key;
    }

    /**
     * @param string $authKey
     * @return bool if auth key is valid for current user
     */
    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }
}

در کد بالا یک تابع با نام tableName وجود دارد که “user” را return می کند شما به جای user باید نام جدول کاربران خود را جایگزین کنید معمولا اسم user یا users را به عنوان نام جدول اطلاعات کاربران انتخاب می کنند

نحوه لاکین یک کاربر در سایت :

کد هایی که در ادامه توضیح داده می شود را درون کنترلر های خود می نویسیم

$identity = User::findOne(['username' => $username]);

Yii::$app->user->login($identity);

به کد های بالا دقت کنید در خط اول ما اطلاعات کاربری را بر اساس نام کاربریش پیدا می کنیم و درون متغیر identity می ریزیم و در خط دوم کاربر را در سایت لاگین می کنید .

حالا هر جا که نیاز داشتید id کاربر را دریافت کنید کافیه از کدی زیر استفاده کند

$id = Yii::$app->user->id;

کد بالا یا ایدی کاربر را میدهد یا اگر کاربر لاگین نباشد مقدار null می دهد

زمانی هم که بخواهید کاربر را از سیستم خارج کنید از 

Yii::$app->user->logout();

استفاده می کنید

در این آموزش یاد گرفتید که چگونه می توانید یک کاربر را با استفاده از نام کاربری آن در سایت لاگین کنید