2017-10-26 3 views
0

を働いていない私は私のroutes.phpファイルにこのコードを持っている:ルーティングと管理スコープはよく

Router::scope('/admin', function (RouteBuilder $routes) { 
    $routes->connect('/', ['controller' => 'Users', 'action' => 'dashboard']); 
    $routes->connect('/login', ['controller' => 'Users', 'action' => 'login']); 
    $routes->connect('/logout', ['controller' => 'Users', 'action' => 'logout']); 
}); 

Router::scope('/', function (RouteBuilder $routes) { 
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); 

    $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); 

    $routes->fallbacks(DashedRoute::class); 
}); 

私が認証されていないユーザーでhttp://localhost/adminを訪れたとき、私はhttp://localhost/admin/loginにリダイレクトされるようにしたいです。この時点で私はhttp://localhost/login

にリダイレクトされてる私は管理者のスコープでライン$routes->fallbacks(DashedRoute::class);を追加し、コードを変更した場合、ログインのリダイレクトはうまく動作しますが、すべての私のリンクは次のようにadmin接頭辞で生成されます。

<?= $this->Html->link($category->name, ['controller' => 'categories', 'action' => 'view', $category->id]) ?> 

が生成されます:

http://localhost/admin/categories/view/13

の代わり:

http://localhost/categories/view/13

どのように私はこの問題を解決することができますか?

+0

@SamHecquet私が外に置くと、$ routes変数(オブジェクト) – Vinicius

答えて

0

これは経路の問題のようではありません。 Auth配列にunauthorizedRedirectと指定するだけでいいですか?このように:

$this->loadComponent('Auth', [ 
    //... 
    'unauthorizedRedirect' => [ 
     'controller'=>'Users', 
     'action'=>'login', 
     'prefix'=>'admin' 
    ] 
]); 

詳細情報here in the CakePHP book

unauthorizedRedirect:不正アクセスの処理を制御します。 デフォルトの権限のないユーザーは、リファラーURLまたは loginActionまたは '/'にリダイレクトされます。

+0

にアクセスできなくなると思います。しかし、私の質問は:なぜ、認証されていないリダイレクトが動作しますが、loginActionを使用していないのですか? – Vinicius

+0

'admin'プレフィックスを指定すると、' loginAction'も動作します。これはちょうどあなたが行っていたことに特有のようでした。しかし、あなたの提供されたコードにはどちらも含まれていないので、あなたの特定の試みがうまくいかない理由/理由を言うのは難しいです。 – Dave

+0

私は 'loginAction'の' admin'プレフィックスを 'unauthorizedRedirect'と同じ方法で使用しようとしましたが動作しませんでした – Vinicius

関連する問題