8
votes

YII Vérifiez si l'utilisateur est connecté avant chaque page

Je dois vérifier si l'utilisateur est connecté avant de rendant l'exemple de chaque page:

http://myyage.com/site/about

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?


0 commentaires

9 Réponses :


3
votes

Vous pouvez écrire un chèque dans la fonction init () du contrôleur. Qui redirigera l'utilisateur s'il n'est pas connecté xxx


1 commentaires

Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale



8
votes

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
    }


1 commentaires

Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale



-1
votes

É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> xxx pré>

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
} 


2 commentaires

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.



4
votes

Utiliser la règle d'accès à Achevie Ce serait une meilleure façon: xxx

si vous voulez vraiment une vérification à une place, puis allez sur composant / contrôleur et Faites-le dans le contrôleur. parce que tout contrôleur hérite de ce contrôleur.


5 commentaires

Je ne veux pas le placer dans chaque contrôleur, j'ai besoin de solution globale


Où puis-je trouver composant / contrôleur ?


@ 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?



2
votes

Pour une solution globale, ajoutez AccessControl à votre contrôleur de base (par défaut protégé / composants / ccontroller.php code>). xxx pré>

puis dans le contrôleur avec votre login Action Modifier le 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()
    );
}


0 commentaires

0
votes

É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;
}


0 commentaires

3
votes

Ceci fonctionne pour moi xxx

Vous devez simplement ajouter la fonction ci-dessus dans le composant / contrôleur.php


1 commentaires

pouvez-vous s'il vous plaît dire où est composé / contrôleur.php dans yii2



0
votes

Vous pouvez ajouter un comportement global à votre configuration: xxx

http://stuff.cebe.cc/yiii2docs/guide-concept-configurations.html#configuration-format


0 commentaires

0
votes

Désolé pour la publication de zombie, mais j'utilise Isguest. XXX


0 commentaires