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
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);
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']));