PDA

View Full Version : مشکل با لاگین در yii2 ( گاهی اوقات حتی با وجود لاگین بودن باز هم کاربر با خطای ۴۰۳ مواجه می شود)



shakibonline
پنج شنبه 17 خرداد 1397, 16:17 عصر
سلام.
برنامه با استفاده از yii2 نوشته شده است و گاهی اوقات که کاربر در حال مشاهده ی صفحات ( صفحاتی که کاربر حق دسترسی به آن را دارد ) می باشد، با خطای عدم امکان دسترسی مواجه می شود. البته با رفرش کردن مجدد صفحه، کار می تواند صفحه ی مورد نظر را مشاهده کند.

پس از بررسی های که انجام دادم، موجه شدم که کاربر به دلیل برقرار نبودن،‌شرط زیر امکان دسترسی ندارد.


if(!\Yii::$app->user->identity)



کد کامل، متد مربوط به این بخش



public static function CheckHasPermission($permission)
{
if(!\Yii::$app->user->identity) {
\Yii::error($message = 'User Not identity', $category = 'ABBAS');
return false;
}
$role_admin = Role::find()->where(['rle_slug' => 'admin'])->one()->rle_id;
if(\Yii::$app->user->identity && \Yii::$app->user->identity->usr_role == $role_admin) {
return true;
}
$perid = Permission::findOne(['pms_slug'=>$permission]);
if(!$perid) {
if ( $permission == 'order_list' ) {
\Yii::error($message = 'No permission', $category = 'ABBAS');
\Yii::error($message = $perid, $category = 'ABBAS-perid');
}
throw new \yii\web\ForbiddenHttpException('دسترسی به این صفحه برای شما امکانپذیر نیست ');
}


$role = Roleassignment::find()
->where([
'rag_role'=>\Yii::$app->user->identity->usr_role,
'rag_permission'=>$perid->pms_id
])
->one();

if ( $permission == 'order_list' ) {
\Yii::error('Return Roleassignment', $category = 'ABBAS');
\Yii::error($role, $category = 'ABBAS-role');
}
return $role;
}



که با توجه به لاگ های ذخیره شده، هنگامی که این مشکل رخ می دهد، شرط خط ۳ برقرار نمی باشد، یعنی شرط زیر



if(!\Yii::$app->user->identity) {
\Yii::error($message = 'User Not identity', $category = 'ABBAS');
return false;
}


و همانطور که گفتم، با رفرش کردن صفحه، مشکل حل خواهد شد!

charcharkh
سه شنبه 29 خرداد 1397, 17:08 عصر
موقع لاگین اینو چجوری تنظیم کردی




Yii::$app->user->login($login->getUser(), 3600 * 24 * 30);

m_r_1989
شنبه 27 مرداد 1397, 17:54 عصر
مشکل اینکه identity خالی هست


سرور اچ پی

(http://hpserverhome.ir)گفتار درمانی (http://goftar-darmani.com/)