2017-10-26 8 views
0

routes.php 파일에이 코드를 가지고 : 나는 인증되지 않은 사용자와 http://localhost/admin를 방문 할 때라우팅 및 관리 범위 작동하지 잘

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/login로 리디렉션되고 싶어요. 지금이 순간 내가 관리자 범위에서 선 $routes->fallbacks(DashedRoute::class);을 추가 http://localhost/login

내가 코드를 변경하는 경우로 리디렉션되고있어, 로그인에 대한 리디렉션 잘 작동하지만 내 모든 링크는 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

경로 문제와 같이 보이지 않습니다. 인증 배열에 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