php - Laravel 5 身份验证中间件总是重定向到 root 或登录

标签 php laravel laravel-5 middleware laravel-5.2

当我在 Laravel 5 中保护路由时,它在我未登录时运行良好,因为它会将 protected 路由重定向到登录页面,但一旦我登录并尝试访问 protected 路由,它就会将我重定向到根路由。 例如,如果我尝试访问/people 或/people/1,它会将我重定向到/

这是我的 routes.php 文件:

Route::get('/', function () {
 return view('welcome');
});

Route::group(['middleware' => ['auth']], function () {
 Route::resource('people', 'PeopleController');
 Route::resource('people.checkins', 'CheckinsController');
 Route::model('checkins', 'Checkin');
 Route::model('people', 'Person');

 Route::bind('checkins', function($value, $route) {
    return App\Checkin::whereId($value)->first();
 });
 Route::bind('people', function($value, $route) {
    return App\Person::whereId($value)->first();
 });
});

Route::group(['middleware' => 'web'], function () {
 Route::auth();

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

最佳答案

如果您要使用 Auth,您也应该将“web”组应用于这些路由。

您可以将使用“auth”中间件的路由组调整为:

Route::group(['middleware' => ['web', 'auth']], function () {
    // ...
});

更新 对于 Laravel 5.2.27。如果你安装了 laravel/laravel >= 5.2.27 的新副本,你的路由将被包装在一个默认应用 'web' 中间件的组中。这仅适用于全新安装,因为此更改是对 App\Providers\RouteServiceProvider 的更改,升级到 laravel/framework 不会触及。

关于php - Laravel 5 身份验证中间件总是重定向到 root 或登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553345/

相关文章:

Laravel 未连接到 homestead 数据库

php - Laravel:如果字段在传递到 `view` 之前有值,请检查 Controller

javascript - JS变量转PHP转Mysql查询

javascript - 在 iframe 中加载外部网站但不发送 HTTP_REFERER

php - 想要将 order_ids 数组作为单独的一个一个插入插入到 mysql 数据库中

php - 如何修复 'SQLSTATE[42S22]: Column not found: 1054 Unknown column ' 中的 'where clause' id' (SQL : select * from `users` where `id` = 0 limit 1)'

mysql - 如何从vagrant box连接到远程数据库

php - Laravel:CRUD 路由有一个空参数

javascript - Blade 上的 Laravel 自定义 javascript 不起作用

php - JavaScript 返回和 php 问题 (true,false)