سلام.
برنامه با استفاده از 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;
}


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