• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با لاگین ماندن کاربر -- yii2advanced
#1
برای درک بهتر از لاگین کردن یوزر کلاس زیر رو برای خودم مثال زدم :
کد پی‌اچ‌پی:
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($ob3600);
echo (
Yii::$app->user->isGuest) ? 'is guest</br>' 'is user'

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

مشکل کجاست؟
ممنون

توی تنظیمات کلاسی user به اون اشاره می کنه رو به شکر زیر تغییر دادم :
کد پی‌اچ‌پی:
'components' => [
        
'user' => [
//            'identityClass' => 'common\models\User',
            
'identityClass' => 'frontend\models\TestUser',
            
'enableAutoLogin' => true,
        ],
 
    .... 

کلاس TestUser به این شکل هست :
کد پی‌اچ‌پی:
<?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';
    }   


حالا پیغام خطای زیر رو داده :
نقل قول:yii\base\InvalidValueException The identity object must implement IdentityInterface.

خوب من که از واسط IdentityInteface توی کلاسم استفاده کردم مشکل چیه؟

خطا از این خط کذ گرفته می شه:

کد پی‌اچ‌پی:
echo (Yii::$app->user->isGuest) ? 'is guest</br>' 'is user</br>'
  پاسخ
تشکر شده توسط :
#2
ظاهرا خطایی که میاد برای زمانی هست که کاربر لاگین نکرده و با رسیدن به این خط کد به وجود میاد:
کد پی‌اچ‌پی:
echo (Yii::$app->user->isGuest) ? 'is guest</br>' 'is user</br>'

وقتی قبل از کد بالا لاگین می کنم مشکلی نیست و کاربر رو می شناسه ولی همچنان سشن کاربر باقی نمی مونه و با رفرش از بین می ره :
کد پی‌اچ‌پی:
Yii::$app->user->login($ob);

        echo (
Yii::$app->user->isGuest) ? 'is guest</br>' 'is user</br>'
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 4 مهمان