访问NeedLogin操作后不重定向到登录页面


Not redirect to login page after accessed to a NeededLogin action

我是yii2的新手。

当使用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'],
                ],
            ],
        ];
    }

好吧,你正在做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
   }
}