6
votes

Retour à la dernière URL entrée après succès de connexion à Yii

J'ai la fonction de connexion sur son contrôle de fonction réussi va à Dashboard / Index . Supposons que l'utilisateur entrait dirigeant / index La page reviennent à la connexion en raison de règles d'accès définies, je veux juste que après succès de contrôle de connexion réussie soit à la dernière entrée d'URL entrée Ie Prains / Index .


1 commentaires

Lorsque vous déconnectez l'utilisateur vérifiant les règles d'accès. Passez l'URL actuelle dans la chaîne de requête. Et redirige juste à cela si elles se sont connectées avec succès.


7 Réponses :


2
votes

Je pense que cela fonctionnera: xxx

puis utiliser, xxx

à rediriger.

ou vous Peut également prendre de l'aide de la session.

avant le jeu de connexion xxx

juste avant de rediriger après la vérification de la connexion xxx


0 commentaires

4
votes
... Controller extends CController (){
...
public function init() {

   if($this->isValidForRedirectRequest(Yii::app()->request)){
       Yii::app()->user->returnUrl = Yii::app()->request->requestUri;
   }
}
...

public function isValidForRedirectRequest(){
   /*something validations of request, like isAjax or other */
}
}...




... LoginController()...{

if($authIdentity->authenticate()) $this->redirect(Yii::app()->user->returnUrl);
...

}

2 commentaires

Cette ligne de code a fonctionné pour moi. Merci de votre aide. $ ceci-> Redirection (Yii :: App () -> Utilisateur-> Vert);


Je suis désolé, mais ce n'est pas la façon dont il est censé être fait. Tout ce dont vous avez besoin est d'ajouter yii :: app () -> user-> loginRequirequité () à l'action nécessitant une connexion (ou utilisez des règles d'accès). Yii fait le reste pour vous. Pas besoin de déconner manuellement avec des redirections!



1
votes

Je pense que la réponse la plus simple pour cette question est ce code:

$this->redirect(Yii::app()->request->urlReferrer);


0 commentaires

1
votes

pour yii2. strong>

dans le contrôleur dans la méthode actionlogin () code> Utilisez ceci: p>

if (Yii::$app->user->getReturnUrl() == '/') {
  return $this->redirect('dashboard/index');
} else {
  return $this->redirect(Yii::$app->user->getReturnUrl());
}


0 commentaires

0
votes

Il est préférable de contrôler ce comportement par des sessions (pagination par exemple, ...) mais, xxx

fonctionnera.


0 commentaires

1
votes

Utilisez $ ceci-> redirection (yii :: app (app (app () -> user-> returnerl) code> dans votre sitecontroller code>.

public function actionLogin() {
    $this->setTheme();
    $this->layout = '//layouts/login';
    $model = new LoginForm;

    // if it is ajax validation request
    if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }

    // collect user input data
    if (isset($_POST['LoginForm'])) {
        $model->attributes = $_POST['LoginForm'];
        // validate user input and redirect to the previous page if valid
        if ($model->validate() && $model->login())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // display the login form
    $this->render('login', array('model' => $model));
}


0 commentaires

0
votes

Il y a une condition lorsque ActionID = auth, de sorte que cela ne fonctionne que lorsque l'action est authentique qui ouvre la fenêtre Google Auth. XXX


0 commentaires