访问NeededLogin操作后,不会重定向到登录页面

时间:2016-05-15 13:03:16

标签: javascript php yii2

我是yii2的新人。

使用网址调用操作时,会正确地重定向到登录页面。 导航栏上的示例

['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'],
                ],
            ],
        ];
    }

1 个答案:

答案 0 :(得分: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
   }
}