私は CakePHP 3 を使用しており、ユーザーがログインした後にデフォルト ルートを変更しようとしています。ユーザーによって異なるデフォルト ルートを設定したいと考えていますrole_id
。
私は解決策を見つけましたが、CakePHP 2 専用です。CakePHP 3 では使用できません。ブートストラップで Session コンポーネントを使用できません。
だから私は自分のAppControllerでこれを試しました
public $redirects = [
'admin' => ['controller' => 'Clients', 'action' => 'statistics'],
'user' => ['controller' => 'Clients', 'action' => 'index'],
];
public function initialize()
{
parent::initialize();
...
if ($this->Auth->user())
Configure::write('Route.default', $this->redirects[$this->Auth->user('role_id')]);
else
Configure::write('Route.default', ['controller' => 'Users', 'action' => 'login']);
Router::scope('/', function($routes) {
$routes->connect('/', Configure::read('Route.default'));
$routes->fallbacks('InflectedRoute');
});
}
私のデフォルトルートは
$routes->connect('/', \Cake\Core\Configure::read('Route.default'));
Route.default
そして、bootstrap.phpで次のように定義しました
Configure::write('Route.default', ['controller' => 'Users', 'action' => 'login']);
しかし、/
ページを開くと、users/login
すでにログインしていてもページが表示されます
だから私は前にリダイレクトを追加しましたRouter::scope
if (
$this->Auth->user()
&& $this->request->params['controller'] == 'Users'
&& $this->request->params['action'] == 'login'
) {
$this->redirect(Configure::read('Route.default'));
}
誰でもそれを手伝ってもらえますか?