2017-05-05 8 views
0

Laut der Dokumentation kann ich keinen Namen für eine Gruppe von Routen in Slim 3
In Auth Middleware Ich möchte Routen für die erforderliche Authentifizierung und nicht teilen. Wie:Slim 3 Group Routen Name für Middleware

# 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()); 

In der zweiten Gruppe möchte ich die Auth-Middleware für Ajax zurückzukehren 403 fordert stattdessen in der ersten Umleitung.

Ich möchte kein Array mit Namen aller Routen verwalten, wie in this great answer vorgeschlagen. Es sollte ein Name der Gruppe sein und darauf basierend entscheiden, welche Art von Antwortcode zurückgegeben werden soll.

Ich möchte auch nicht zwei Middlewares verwalten. Ich suche eine elegante Lösung für die Verwaltung der aktuellen Routengruppe.

Antwort

1

Schlanke 3 Gruppen haben Namen nicht - sie sind im Wesentlichen syntaktischer Zucker, die zwei Dinge tun:

  1. Prepend ein optionales URL-Segment zu einem Satz von Routendefinitionen.
  2. Wenden Sie Middleware auf eine Reihe von Routendefinitionen an.

zu tun, was Sie brauchen, Ihre CheckSession Middleware tun wollen den Antrag des Pfad zu überprüfen, zu arbeiten, wenn es mit api/ beginnt und sie eine 403 in diesem Fall senden. Alternativ könnte CheckSession nach dem Header X-Requested-With suchen, der normalerweise mit Ajax-Anfragen gesendet wird.

+0

Danke. Ich kann es akzeptieren, aber es scheint mir keine elegante Lösung zu sein. Ich brauche nicht wirklich einen Namen der Routengruppe, sondern eine Art Hinweis darauf, welche Gruppe ich jetzt verwende. Auch wenn es überhaupt unmöglich ist, denken Sie nicht, dass es ein benötigtes Merkmal sein kann? Ich habe nicht die Probleme in Slim Bugtracker überprüfen, ich denke, es kann ein schöner Kandidat sein. – Doc999tor

+0

Es wäre ein großes Stück Chirurgie für den Code, da es kein Konzept für "Gruppe" gibt, wenn "$ app-> run()" ausgeführt wird. –

Verwandte Themen