Laravel 5 Groupe de routes et Basic ( / ) get Route within group

je travaille sur une application web Laravel 5.0 avec un panneau D'administration. Je suis confronté à un problème avec les Routes. J'ai regroupé les Routes Admin comme ci-dessous,

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function () {
    Route::get('login', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogin'
    ]);
    Route::get('logout', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogout'
    ]);
    Route::post('login', 'AuthController@postLogin');
});

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin','auth', 'admin.acl']], function () {

    Route::get('dashboard', [
        'as'         => 'admin.dashboard',
        'uses'       => 'DashboardController@index',
        'permission' => 'admin_dashboard'
    ]);

    //Image Handler
    Route::get('images/{size}/{name?}',[
        'as'   => 'admin.images',
        'uses' => 'ImagesController@images'
    ]);

    Route::resource('user', 'UsersController');

    ........   

});

les choses fonctionnent bien. Je peux l'utiliser sans aucun problème,

http://domain.com/admin/dashboard
http://domain.com/admin/login

Mais je veux

http://domain.com/admin

pour afficher la page de connexion ou rediriger vers

http://domain.com/admin/login

alors j'ai changé mon premier groupe en suivant,

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function () {

    Route::get('/', [        
        'uses' => 'AuthController@getLogin'
    ]);
    Route::get('login', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogin'
    ]);
    Route::get('logout', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogout'
    ]);
    Route::post('login', 'AuthController@postLogin');
});

maintenant quand j'accède

http://domain.com/admin

je vois 'cette page Web a une boucle de redirection' dans chrome. Est-ce possible en groupe de Route? si non comment faire avec .htaccess?

UPDATE

ci-Dessous handle méthode d'un Middleware user.admin. Ce qui ne fait que changer le modèle sous-jacent d'authentification.

    public function handle($request, Closure $next)
    {
        Config::set('auth.table', 'admins');
        Config::set('auth.model', 'AppDBAdminAdmin');

        Config::set('session.cookie', 'admin_session');
        Config::set('session.path', '/admin/');

        return $next($request);
    }

UPDATE

C'est incroyable, suite à des travaux

http://domain.com/index.php/admin

je n'ai pas touché par défaut .htaccess fourni par laravel 5.0, qui est ci-dessous,

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ / [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

j'ai presque 60-70 itinéraires, et tous travaillent sans index.php accepter dans le scénario ci-dessus, j'avais besoin index.php.

15
demandé sur pinkal vansia 2015-06-16 17:58:27

3 réponses

Le problème est que 'l'utilisateur.admin' middleware est toujours en cours d'exécution, même sur '/admin/login'. Ainsi, lorsque vous accédez à '/admin', Vous êtes redirigé vers '/admin/login', puis le middleware vous redirige vers '/admin/login', et cela se produit pour toujours. C'est la raison pour laquelle vous obtenez 'cette page Web a une boucle de redirection'.

pour que cela fonctionne, vous devez exclure ' admin / login 'de l'utilisation de votre' user.admin ' middleware.

5
répondu Alex Kyriakidis 2015-06-21 09:58:23

Vous pouvez avoir cela sans préfixe, ajoutez simplement une route 'admin' qui fait la redirection:

// responds to http://domain.com/admin
Route::get('admin', function(){
  if (//User not authenticated)
    return redirect()->to('admin/login');
  else
    //show admin;
});
3
répondu dynamic 2015-06-16 17:26:54

Le problème peut être causé par un dossier nommé admin dans l'annuaire public.

0
répondu Ismail RBOUH 2016-08-26 17:24:20