مشکل با لاگین ماندن کاربر

[font="Tahoma"][rtl] برای درک بهتر از لاگین کردن یوزر کلاس زیر رو برای خودم مثال زدم :[/rtl][/font]




class testUser implements IdentityInterface{

     

    public $username = 'ali';

     

    public static function findIdentity($id)

    {

        return 'findIdentity';

    }

 

    public static function findIdentityByAccessToken($token, $type = null)

    {

        return 'findIdentityByAccessToken';

    }

 

    public function getId()

    {

        return 'getId';

    }

 

    public function getAuthKey()

    {

        return 'getAuthKey';

    }

 

    public function validateAuthKey($authKey)

    {

        return 'validateAuthKey';

    }   

}

 

$ob = new testUser();

 

echo (Yii::$app->user->isGuest) ? 'is guest</br>' : 'is user';

Yii::$app->user->login($ob, 3600);

echo (Yii::$app->user->isGuest) ? 'is guest</br>' : 'is user';



[font="Tahoma"][rtl]این کد رو توی view گذاشتم که راحت تر تست کنم. مشکل اینجاست که کاربر لاگین نمی مونه. بعنی هرسری که refresh می کنم قبل از login می زنه is guest و بعد از لاگین می زنه is user

مشکل کجاست؟

ممنون [/rtl][/font]

[font="Tahoma"][rtl] توی تنظیمات کلاسی user به اون اشاره می کنه رو به شکر زیر تغییر دادم :[/rtl][/font]




'components' => [

        'user' => [

//            'identityClass' => 'common\models\User',

            'identityClass' => 'frontend\models\TestUser',

            'enableAutoLogin' => true,

        ],

 

    .... 



[font="Tahoma"][rtl] کلاس TestUser به این شکل هست :[/rtl][/font]




<?php

namespace frontend\models;

 

use yii\web\IdentityInterface;

use Yii;

class TestUser implements IdentityInterface{

     

    public $username = 'ali';

     

    public static function findIdentity($id)

    {

        return 'findIdentity';

    }

 

    public static function findIdentityByAccessToken($token, $type = null)

    {

        return 'findIdentityByAccessToken';

    }

 

    public function getId()

    {

        return 'getId';

    }

 

    public function getAuthKey()

    {

        return 'getAuthKey';

    }

 

    public function validateAuthKey($authKey)

    {

        return 'validateAuthKey';

    }   

} 



[font="Tahoma"][rtl] حالا پیغام خطای زیر رو داده :[/rtl][/font]

[font="Tahoma"][rtl]خوب من که از واسط IdentityInteface توی کلاسم استفاده کردم مشکل چیه؟ خطا از این خط کذ گرفته می شه:[/rtl][/font]




echo (Yii::$app->user->isGuest) ? 'is guest</br>' : 'is user</br>'; 



[font="Tahoma"][rtl]ظاهرا خطایی که میاد برای زمانی هست که کاربر لاگین نکرده و با رسیدن به این خط کد به وجود میاد:[/rtl][/font]




echo (Yii::$app->user->isGuest) ? 'is guest</br>' : 'is user</br>'; 



[font="Tahoma"][rtl] وقتی قبل از کد بالا لاگین می کنم مشکلی نیست و کاربر رو می شناسه ولی همچنان سشن کاربر باقی نمی مونه و با رفرش از بین می ره :[/rtl][/font]




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


        echo (Yii::$app->user->isGuest) ? 'is guest</br>' : 'is user</br>'; 



[font="Tahoma"][rtl]

سلام دوست عزیز

من خودم تازه وارد yii شدم و زیاد به این فریمورک وارد نیستم.

ولی فکر کنم مشکل شما برمیگرده به متد getId().

یعنی فریمورک برای اینکه بدونه کاربر لاگین کرده این متد رو صدا می زنه و اسم کاربر رو از اونجا می خونه و چون توی اون متد این دستور return ‘getId’; وجود داره نمیتونه کاربر رو تشخیص بده.

این نظر بنده بود. باز خود اساتید نظر بدن شاید مشکل از جای دیگه س.

[/rtl][/font]