2017-05-05 7 views
0

문서에 따르면 Slim 3에 라우트 그룹 이름을 설정할 수 없습니다.
인증 미들웨어에서 필요한 인증을 위해 라우트를 분할하고 싶지 않습니다. 마찬가지로 : 두 번째 그룹에서슬림 3 그룹 경로 미들웨어 이름

# These routes will return 302 redirect on auth false 
$app->group('', function() use ($app) { 
    $app->get('/first', 'HomeCtrl:first')->setName('first'); 
    $app->get('/second', 'HomeCtrl:second')->setName('second'); 
})->add(new \Lib\Middlewares\CheckSession()); 

# These routes will return 403 on auth false 
$app->group('api/', function() use ($app) { 
    $app->get('users', 'UsersCtrl:getUsers')->setName('users'); 
    $app->get('pages', 'PagesCtrl:getPages')->setName('pages'); 
})->add(new \Lib\Middlewares\CheckSession()); 

나는 인증 미들웨어가 아약스에 대한 403 대신 먼저 리디렉션의 호출을 반환합니다.

this great answer과 같이 모든 경로의 이름을 가진 배열을 관리하고 싶지 않습니다. 그룹의 이름이어야하며 반환 할 응답 코드의 종류를 결정해야합니다.

두 개의 미들웨어 중 하나를 관리하고 싶지 않습니다. 현재 루트 그룹을 관리하기위한 훌륭한 솔루션을 찾고 있습니다.

답변

1

슬림 3 그룹 이름이없는 - 그들은 본질적으로 두 가지 않습니다 문법 설탕 있습니다 : 경로 정의 세트에

  1. 앞에 추가 옵션 URL 세그먼트를.
  2. 일련의 라우트 정의에 미들웨어를 적용하십시오. 당신이 원하는 것을 할

, 당신의 CheckSession 미들웨어는 api/로 시작하고 그 경우에 403를 보낼 경우 해결하기 위해 요청의 경로를 확인해야합니다. 또는 CheckSession은 보통 ajax 요청으로 전송되는 X-Requested-With 헤더를 찾을 수 있습니다.

+0

감사합니다. 나는 그것을 받아 들일 수 있지만, 나는 우아한 해결책을 좋아하지 않는다. 나는 루트 그룹의 이름을 필요로하지는 않지만 지금 어떤 그룹을 사용하는지 알려주고 있습니다. 전혀 불가능한 경우에도 필요한 기능이라고 생각하지 않습니까? Slim bugtracker에서 문제를 확인하지 못했지만 좋은 후보라고 생각합니다. – Doc999tor

+0

'$ app-> run()'이 실행 중일 때 "그룹"이라는 개념이 없으므로 코드의 주요 수술이 될 것입니다. –