[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
[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]
[font="Tahoma"][rtl] وقتی قبل از کد بالا لاگین می کنم مشکلی نیست و کاربر رو می شناسه ولی همچنان سشن کاربر باقی نمی مونه و با رفرش از بین می ره :[/rtl][/font]
من خودم تازه وارد yii شدم و زیاد به این فریمورک وارد نیستم.
ولی فکر کنم مشکل شما برمیگرده به متد getId().
یعنی فریمورک برای اینکه بدونه کاربر لاگین کرده این متد رو صدا می زنه و اسم کاربر رو از اونجا می خونه و چون توی اون متد این دستور return ‘getId’; وجود داره نمیتونه کاربر رو تشخیص بده.
این نظر بنده بود. باز خود اساتید نظر بدن شاید مشکل از جای دیگه س.