2016-04-25 10 views
0

何日も過ごした後、専門家から助けを得ようとしています。 XX-アクションをコントローラに送信しFORMDATA: 私はyii2ログインページのリダイレクトがキャンセルされた状態でループする

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


    } 
} 

マイワークフロー STEP1、

enter image description here

この

は私のコントローラクラスで、唯一のChromeブラウザでの私のyii2アプリケーションにログインリダイレクトで立ち往生しています step2:ユーザーログインの場合は、さらに処理を進めます Else セッションに値を保存しようとしているときに、ページをログインにリダイレクトしようとしています

手順3:ログインに成功した後、同じxx-actionに戻ります

このワークフローはFirefoxでうまくいきますが、クロムはログインページを通過しない不規則ループになっています。 スクリーンショットを添付して参照してください

この問題を解決するのを手伝ってください。

答えて

1

私はどのようにあなたがあなたのactionGenerateevent()を呼び出しているinfereことはできませんが、あなたがそこにエラーがあるようです:あなたは$redirectUrlを設定していないので

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

を、あなたのredirectは(現在にあなたをリダイレクトしています同じ)URLを何度も繰り返し、ループを引き起こします。

これは、redirectUrl()メソッドで使用される関数です。Url::to()です。そのドキュメントは言う:

空の文字列:現在要求されているURLが返されます。

+0

実際にはbeforeaction()関数を呼び出していますので、$ redirectUrl = ""は必要ありません。 あなたは正しいですが、このアクションでフォームを送信しているので問題が発生しているため、最初のactionGenerateevent()に問題があります。今私はそれを修正した。どうもありがとうございます。 – user3535066

+0

@ user3535066私は助けてうれしいです!私の答えに印をつけてください。高槻 – slinstj

関連する問題