Je dois vérifier si l'utilisateur est connecté avant de rendant l'exemple de chaque page: p>
http://myyage.com/site/about p>
Au début Vérification Si l'utilisateur est connecté, sinon - Rediriger la page de connexion Tom Je ne veux pas l'ajouter dans chaque composant, comment à ceci? P>
9 Réponses :
Vous pouvez écrire un chèque dans la fonction init () code> du contrôleur. Qui redirigera l'utilisateur s'il n'est pas connecté
Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale
Vous pouvez également vérifier à l'aide de cette option si c'est vrai, l'utilisateur n'est pas connecté sinon connecté
if(Yii::app()->user->isGuest){ //not logged user }else{ //loggedin user }
Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale
Écrivez un code pour vérifier si l'utilisateur est connecté ou non dans un fichier différent.
Inclure cette page PHP dans chaque fichier. P>
Vous devrez simplement écrire le code suivant. p> dans la page CheckLogin.php, vous pouvez écrire ce qui suit pour vérifier si le cookie est défini. P> isset(cookie('<name_of_cookie>'))
{
//User in already logged in
}
else
{
//Redirect to login page
}
Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale
Si c'est PHP, c'est la seule solution. Vous devrez écrire cette ligne au démarrage de chaque page où vous souhaitez vérifier. php incluent ('' Checklogin.php '); ?>
Utiliser la règle d'accès à Achevie Ce serait une meilleure façon: si vous voulez vraiment une vérification à une place, puis allez sur composant / contrôleur code> et Faites-le dans le contrôleur. parce que tout contrôleur hérite de ce contrôleur. P> p>
Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale
Où puis-je trouver composant / contrôleur code>?
@ user2075220 puis créez un basocontroller et faites prolonger ce contrôleur.
@Ruben Je ne suis pas sûr de cela, mais vous devriez le rechercher dans le dossier-cadre Yii
@Timohuovinen est-ce yii \ base \ contrôleur?
Pour une solution globale, ajoutez AccessControl à votre contrôleur de base (par défaut puis dans le contrôleur avec votre login Action Modifier le protégé / composants / ccontroller.php code>).
Accessrules code> Pour permettre à tous les utilisateurs d'accéder à la page de connexion P>
public function accessRules()
{
return array_merge(array(
'allow',
'actions'=>array('login'),
'users'=>array('*'),
),parent::accessRules()
);
}
Étendez les composants / contrôleur avec BeForeaction
public function beforeAction(CAction $action) { if(!isset(Yii::app()->session['user']) && !($action->controller->id == 'site' && $action->id == 'login')) { $this->redirect(array('site/login')); } return true; }
Ceci fonctionne pour moi Vous devez simplement ajouter la fonction ci-dessus dans le composant / contrôleur.php p> p> p>
pouvez-vous s'il vous plaît dire où est composé / contrôleur.php dans yii2
Vous pouvez ajouter un comportement global à votre configuration: http://stuff.cebe.cc/yiii2docs/guide-concept-configurations.html#configuration-format p> p>
Désolé pour la publication de zombie, mais j'utilise Isguest.