2016-04-25 6 views
0

Nach so vielen Tagen versuche ich, Hilfe von Experten zu bekommen. Ich bin mit Login-Umleitung in meiner yii2 Anwendung nur in Chrome-Browser stecken,yii2 Login-Seite Umleitung Looping mit abgebrochenen Status

enter image description here

Das ist meine Controller-Klasse,

class InvitationsController extends Controller 
{ 
    public function beforeAction($action) 
    { $array=array('index','imageupload','template','category','subcategory','slug','chooseanotherdesign'); 
     if(!in_array($action->id, $array)) 
      { 
       if (\Yii::$app->getUser()->isGuest && 
        \Yii::$app->getRequest()->url !== Url::to(\Yii::$app->getUser()->loginUrl) 
       ) { 
        \Yii::$app->getResponse()->redirect(\Yii::$app->getUser()->loginUrl,FALSE); 
       } 
      } 
       return parent::beforeAction($action); 
    } 
    public function actionGenerateevent(){ 
     $redirectUrl=""; 
       if(Yii::$app->request->post()){ 
        unset(Yii::$app->session['copyinvitation']); 
        unset(Yii::$app->session['eventform']); 
        Yii::$app->session['eventform']=Yii::$app->request->post(); 
       } 
       if (!Yii::$app->user->isGuest) 
       { 
         $eventid=$this->invitation->savecontinue(Yii::$app->session['eventform']); 
         $eventdata=$this->invitation->getEventById($eventid); 
         $refurl=Yii::$app->session['eventform']['refererurl']; 
         $aa['Events']=$eventdata; 
         $aa['refererurl']=$refurl; 
         Yii::$app->session['eventform']=$aa; 
         $redirectUrl = Yii::$app->urlManager->createAbsoluteUrl(['invitations/event/'.$eventdata['event_token']]); 
         return $this->redirect($redirectUrl); 
       } 


    } 
} 

Mein Workflow Schritt 1: Vorlage Formulardaten xx-Aktion an der Steuerung step2: Wenn sich der Benutzer anmeldet, wird die Aktion fortgesetzt. Else Ich versuche, die Werte in der Sitzung zu speichern und dann die Seite zur Anmeldung umzuleiten

Schritt 3: nach erfolgreicher Anmeldung Uhr gleicher xx-Aktion wieder zurück

Dieser Workflow funktioniert gut in Firefox, aber Chrom es Infinitivform Schleife ist, der sein nicht durch die Login-Seite gehen. Bitte beachten Sie am beigefügten Screenshot

Bitte helfen Sie mir, dieses Problem zu lösen.

Antwort

1

Ich kann nicht infere wie werden Sie Ihre actionGenerateevent() anrufen, aber sie scheint es einen Fehler zu haben:

$redirectUrl=""; //empty 
... 
return $this->redirect($redirectUrl); //still empty 

Da Sie nicht Ihre $redirectUrl Einstellung, Ihre redirect wird Sie zum aktuellen Umleitung (selbe) url immer wieder, verursacht die Schleife.

Dies ist die von redirectUrl() Methode verwendete Methode: Url::to(). Seine Dokumentation sagt:

eine leere Zeichenfolge: die aktuell angeforderte URL wird zurückgegeben;

+0

eigentlich hier aufrufen voraktion() funktionieren so nicht brauchen, dass $ redirectUrl = "". Durch die Art und Weise, die Sie richtig sind, hat der erste Treffer von actionGenerateevent() das Problem, da Formular in dieser Aktion einreichen, gibt es das Problem. Jetzt habe ich es behoben. ich danke dir sehr. – user3535066

+0

@ user3535066 Ich bin froh zu helfen! Könnten Sie bitte meine Antwort markieren? Danke – slinstj