Yii2如何在模块的组件用户中更改loginUrl

Jac*_*ack 2 php yii2

我有以下配置组件 user

    'user' => [
        'identityClass' => 'app\models\web\User',
        'enableAutoLogin' => true,
        'loginUrl'=>['/backend/login'],
    ],
Run Code Online (Sandbox Code Playgroud)

我有2个模块backendfrontend.我想如果用户去后端部分需要使用以下规则,'loginUrl'=>['/backend/login']并且如果要参与此规则的部分'loginUrl'=>['/frontend/login'].我怎样才能做到这一点?

pa3*_*aka 6

对于任何模块或控制器,您可以使用模块或控制器中的AccessControl行为重定向到您的登录操作:

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['login'],
                    'allow' => true,
                    'roles' => ['?'],
                ],
                [
                    'actions' => ['index'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
            'denyCallback' => function($rule, $action) {
                return Yii::$app->response->redirect(['/your/login/url']);
            },
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

或者在Module类文件中:

public function init()
{
    parent::init();

    Yii::$app->user->loginUrl = ['/your/login/url'];
}
Run Code Online (Sandbox Code Playgroud)