Error recurrente después de inactividad

Hola foro,

Tengo la aplicación programada para que se cierre la sesión del usuario después de cierto tiempo de inactividad, esto funciona bien pero a veces después de que pasa el tiempo, al tratar de navegar por la aplicación, en lugar de ser re-dirigido a "site/login" cuando la sesión fue cerrada, me marca el error "Trying to get property of non-object" en


Yii::$app->user->identity->XXX

Entiendo que por lógica user->identity ya no tiene acceso al usuario por que la sesión ya se cerró, pero

¿de que forma puedo "obligar" a ser mandado al login? o ¿por que será que no me manda a login?, lo que tengo que hacer es poner la ruta a "miaplicacion/backend" y entonces si pasa a login.

En esta parte se da el error, es parte del layout main.php




<a href="#" class="dropdown-toggle" data-toggle="dropdown">

    <img src="<?= Yii::$app->user->identity->profileAvatar ?>" class="user-image" alt="User Image"/>

    <span class="hidden-xs"><?= Yii::$app->user->identity->profile->fullName ?></span>

</a>



Yii2, Windows 10, XAMPP

Gracias por sus comentarios

Saludos.

Debes comprobar si el objeto existe y el login es correcto, y de no ser así redirigir a login, y esto deberías hacerlo en el controlador al inicializar la acción, pues tienes un grave error: el usuario está ejecutando una vista para la que se supone que ya no tiene permisos.

No uso el objeto user pero algo asi: if ( empty($usuario) || $usuario->isGuest==true ) $this->redirect($url);

Hola @fher

Coloqué este código al inicio de ‘layout/main.php’




use yii\helpers\Url;


// asegura que el usuario aun tenga su sesión abierta

if (empty(Yii::$app->user) || Yii::$app->user->isGuest == true)

    return Yii::$app->response->redirect(Url::to(['site/index']));



gracias me diste el rumbo,

Saludos.

Patrón MVC: Te funcionará pero ese código no debe ir nunca en las vistas sino en las acciones que requieran login, y si son varias crear una función.

Salu2.