2016-05-15 86 views
0

我是yii2中的新成员。访问NeededLogin操作后未重定向到登录页面

当使用url来调用一个动作时,它会正确地重定向到登录页面。在导航栏

['label' => Yii::t('app', 'Đat san'), 'url' => ['/datsan/create']], 

但是,当使用JavaScript从服务器获取数据 例如,它不会自动重定向到登录页面。我如何解决它?

var vUrl = $("#datsan-url-create").data('url'); 
     $.get(vUrl, function(data){ 
       $('#modal-datsan').modal('show').find('.modalContent').html(data); // update data for modal 
} 

<input type="hidden" id="datsan-url-create" data-url='<?= Url::to(['/datsan/create']) ?>'> 

我检查控制台,它显示如下错误

Forbidden (#403): Login Required 

/.DatsanController.php

public function behaviors() 
    { 
     return [ 
      'access' => [ 
       'class' => AccessControl::className(), 
       'only' => ['create', 'update', 'delete'], 
       'rules' => [ 
        [ 
         'actions' => ['create'], 
         'allow' => true, 
         'roles' => ['@'], 
        ], 
        [ 
         'actions' => ['update', 'delete'], 
         'allow' => true, 
         'roles' => ['@'], 
         'matchCallback' => function ($rule, $action) { 
          if (Yii::$app->user->identity->isAdmin || $this->isUserAuthor()) { 
           return true; 
          } 
          return false; 
         } 
        ], 
       ], 
      ], 
      'verbs' => [ 
       'class' => VerbFilter::className(), 
       'actions' => [ 
        'delete' => ['POST'], 
       ], 
      ], 
     ]; 
    } 

回答

0

那么你正在做的AJAX请求它​​赢得如果你不这样说,那么你不会重定向。我相信你想要的东西,如:

$.get(vUrl, function(data, textStatus, jqXHR){ 
    if (jqXHR.status == 403) { 
     window.location = vUrl; // or whatever login url is 
    } else { 
     $('#modal-datsan').modal('show') 
      .find('.modalContent').html(data); // update data for modal 
    } 
} 
+0

谢谢波格丹。这是行不通的。同样的错误。我尝试添加警报(textStatus);紧接着$ .get(vUrl,function(data,textStatus,jqXHR){),但没有任何警报显示。 – Sam