2015-04-03 25 views
2

我具有以下配置的分量userYii2如何在組件用戶改變loginUrl爲模塊

'user' => [ 
     'identityClass' => 'app\models\web\User', 
     'enableAutoLogin' => true, 
     'loginUrl'=>['/backend/login'], 
    ], 

我有2個模塊和backendfrontend。我想如果用戶去後端部分需要使用以下規則'loginUrl'=>['/backend/login'],如果前端部分這個規則'loginUrl'=>['/frontend/login']。我怎樣才能做到這一點?

回答

1

如果使用高級模板你有兩個配置文件

backend/config/main.php 
frontend/config/main.php 

分離。 您可以分別配置適當的urlLogin。

4

對於任何模塊或控制器,你可以使用模塊或控制器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']); 
      }, 
     ], 
    ]; 
} 

還是在模塊類文件:

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

    Yii::$app->user->loginUrl = ['/your/login/url']; 
} 
+0

這應該是公認的答案,當使用具有兩個或多個模塊的基本模板並使用單獨登錄時可靠的解決方案 – bowpunya 2017-01-16 02:33:46