yii2 - 重定向到除Yii 2行为登录外的页面

标签 yii2

除了Yii 2中的登录行为方法外,还有什么方法可以重定向到页面?

我的行为方法内容:

public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
        'access' => [
            'class' => AccessControl::className(),
            'only' => [ 'create','update' ],
            'rules' => [
                [
                    'allow' => true,
                    'actions' => [ 'create'],
                    'roles' => ['@'],
                ],
                [
                    'allow' => true,
                    'actions' => ['logout'],
                    'roles' => ['?'],
                ],
            ],
        ],
    ];
}

但是它重定向到登录。我需要指定另一个重定向页面或调用:
throw new \yii\web\HttpException(403, 'The requested Item could not be found.');

最佳答案

您需要更改loginUrl类的yii\web\User属性。

如果要全局更改,请编辑配置:

'components' => [
    'user' => [
        'loginUrl' => ['site/sign-in'],  
    ],
],

如果您需要在特定的 Controller 或操作中进行更改,也可以这样设置:
Yii::$app->user->loginUrl = ['site/sign-in'];

您需要在 Controller 中重写beforeAction()方法。在这种情况下执行所有访问检查。
/**
 * @inheritdoc
 */
public function beforeAction($action)
{
    if (parent::beforeAction($action)) {
        // If you want to change it only in one or few actions, add additional check

        Yii::$app->user->loginUrl = ['site/sign-in'];

        return true;
    } else {
        return false;
    }
}

有关更多详细信息,请参阅有关propertyevent的官方文档。

关于yii2 - 重定向到除Yii 2行为登录外的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27408064/

相关文章:

php - Yii2 插入忽略/插入重复项

mysql - 易2 : Populate Another Table after Saving Data to One Table using values of the saved data table

rest - Yii2 Rest API 自定义操作响应中的分页链接

php - 根据场景设置默认模型值

php - 如何在 yii2 kartik gridview 中使用屏蔽输入或下拉列表?

php - 安装Yii2 : Invalid Parameter – yii\base\InvalidParamException

module - Yii2 禁用供应商模块的 Assets

Yii2 自定义gii 生成器和模板?

javascript - 想要在yii2中点击另一个div时显示div

mysql - 查询之间的 Yii2 模型搜索