Klian
Klian

Reputation: 1565

Laravel 5 duplicate web middleware in route list

I've just started a new Laravel 5.2 project and I have a problem with my routes. Web middleware is duplicated in route list and I have a lot of problems with sessions and csrf .

Here is my artisan route:list output:

+--------+----------+----------------------------------+----------------------------+-----------------------------------------------------------------+--------------+
| Domain | Method   | URI                              | Name                       | Action                                                          | Middleware   |
+--------+----------+----------------------------------+----------------------------+-----------------------------------------------------------------+--------------+
|        | GET|HEAD | /                                |                            | Closure                                                         | web,web      |
|        | GET|HEAD | cron/cursos                      | cron_courses               | App\Http\Controllers\CourseController@call_store                | web,web      |
|        | GET|HEAD | cursos                           | courses                    | App\Http\Controllers\CourseController@index                     | web,web      |
|        | GET|HEAD | cursos/buscar                    | courses_search             | App\Http\Controllers\CourseController@search                    | web,web      |
|        | GET|HEAD | cursos/detalle/{id}              | courses_detail             | App\Http\Controllers\CourseController@detail                    | web,web      |
|        | GET|HEAD | cursos/solicitar/{id}            | courses_apply              | App\Http\Controllers\CourseController@apply                     | web,web,auth |
|        | POST     | guardar-datos                    | save_panel                 | App\Http\Controllers\UserController@panel_save                  | web,web,auth |
|        | GET|HEAD | home                             |                            | App\Http\Controllers\HomeController@index                       | web,auth     |
|        | POST     | login                            |                            | App\Http\Controllers\Auth\AuthController@login                  | web,guest    |
|        | GET|HEAD | login                            |                            | App\Http\Controllers\Auth\AuthController@showLoginForm          | web,guest    |
|        | GET|HEAD | logout                           |                            | App\Http\Controllers\Auth\AuthController@logout                 | web          |
|        | GET|HEAD | panel                            | panel                      | App\Http\Controllers\UserController@panel                       | web,web,auth |
|        | POST     | password/email                   |                            | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest    |
|        | POST     | password/reset                   |                            | App\Http\Controllers\Auth\PasswordController@reset              | web,guest    |
|        | GET|HEAD | password/reset/{token?}          |                            | App\Http\Controllers\Auth\PasswordController@showResetForm      | web,guest    |
|        | GET|HEAD | prueba                           | prueba                     | App\Http\Controllers\UserController@prueba                      | web,web      |
|        | POST     | register                         |                            | App\Http\Controllers\Auth\AuthController@register               | web,guest    |
|        | GET|HEAD | register                         |                            | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | web,guest    |
|        | GET|HEAD | sociallogin/callback/{provider?} | auth.getSocialAuthCallback | App\Http\Controllers\AuthSocialController@getSocialAuthCallback | web,web      |
|        | GET|HEAD | sociallogin/{provider?}          | auth.getSocialAuth         | App\Http\Controllers\AuthSocialController@getSocialAuth         | web,web      |
+--------+----------+----------------------------------+----------------------------+-----------------------------------------------------------------+--------------+

And here is my routes.php file:

Route::group(['middleware' => ['web']], function () {
    Route::get('/', function () {
        return view('welcome');
    });

    Route::get('/prueba', ['as' => 'prueba', 'uses' => 'UserController@prueba']);

    # HOME
    Route::get('/cursos',              ['as' => 'courses',        'uses' => 'CourseController@index']);
    Route::get('/cursos/buscar',       ['as' => 'courses_search', 'uses' => 'CourseController@search']);
    Route::get('/cursos/detalle/{id}', ['as' => 'courses_detail', 'uses' => 'CourseController@detail']);

    # SOCIAL LOGIN
    Route::get('/sociallogin/{provider?}',[
        'uses' => 'AuthSocialController@getSocialAuth',
        'as'   => 'auth.getSocialAuth'
    ]);
    Route::get('/sociallogin/callback/{provider?}',[
        'uses' => 'AuthSocialController@getSocialAuthCallback',
        'as'   => 'auth.getSocialAuthCallback'
    ]);

});

Route::group(['prefix' => 'cron', 'middleware' => ['web']], function () {
    Route::get('/cursos',       ['as' => 'cron_courses', 'uses' => 'CourseController@call_store']);
});

Route::group(['middleware' => ['web', 'auth']], function () {
    Route::get('/panel',          ['as' => 'panel',      'uses' => 'UserController@panel']);
    Route::post('/guardar-datos', ['as' => 'save_panel', 'uses' => 'UserController@panel_save']);

    Route::get('/cursos/solicitar/{id}', ['as' => 'courses_apply', 'uses' => 'CourseController@apply']);

});

Route::auth();

Route::get('/home', 'HomeController@index');

I have another project with Laravel 5.2 and I everything is working fine.

Any idea how to solve it ?

Thanks!

Upvotes: 2

Views: 3505

Answers (2)

Davor Minchorov
Davor Minchorov

Reputation: 2076

For some reason, you have an extra route group in your routes.php file. Remove that route group and it should be fixed.

Laravel uses the 'web' middleware by default behind the scenes in the latest versions of 5.2!

Upvotes: 0

Alexey Mezenin
Alexey Mezenin

Reputation: 163748

You should remove web middleware from routes.php, because since 5.2.27 Laravel applies web middleware automatically to all routes in routes.php.

Upvotes: 1

Related Questions