yii2抛出错误,而不是重定向到登录页面

yii2抛出错误,而不是重定向到登录页面,yii,yii2,Yii,Yii2,我不希望猜测url的人自动重定向到登录页面。我想抛出一个错误,而不是重定向,当然,除非您已登录。yii2的方法是什么?您可以在相关控制器中重写beforeAction()方法 /** * @inheritdoc */ public function beforeAction($action) { if(Yii::$app->getUser()->isGuest && !in_array($action->id,['allowed', 'actions

我不希望猜测url的人自动重定向到登录页面。我想抛出一个错误,而不是重定向,当然,除非您已登录。yii2的方法是什么?

您可以在相关控制器中重写beforeAction()方法

/**
 * @inheritdoc
 */
public function beforeAction($action)
{
    if(Yii::$app->getUser()->isGuest && !in_array($action->id,['allowed', 'actions', 'here']))
        throw new \yii\web\HttpException(403, 'Page could not be found.');

    if (!parent::beforeAction($action)) {
        return false;
    }

    return true;
}

要进一步阅读本主题,您可以查看Yii2文档:

找到了解决方案。在
行为中
可以添加

[
    'class' => AccessControl::className(),
    ...
    'denyCallback' => function ($rule, $action) {
        throw new \Exception('You are not allowed to access this page');
    }
]

根据

是的,但重点是您可以将自定义访问控制代码放在那里。添加另一个条件可以解决您的问题。我会调整代码。这是你能做的最好的解决方案。过滤器已经完成,而不是创建新过滤器或覆盖beforAction。干得好