【问题标题】:Laravel How to get web or auth middleware to workLaravel 如何让 web 或 auth 中间件工作
【发布时间】:2017-10-09 15:39:28
【问题描述】:

开发一个 Laravel 包并在路线中我有这条路线

Route::middleware(['web'])->group(function () {
Route::get('/pckOne', 'Frutdev\LaravPck\Controllers\PckController@getIndex');

Route::get('/pckZone', 'Frutdev\LaravPck\Controllers\PckController@getZone');
Route::post('/pckZone', 'Frutdev\LaravPck\Controllers\PckController@postZone');
Route::get('/pckUsers', 'Frutdev\LaravPck\Controllers\PckController@getUsers');
Route::get('/pckUser', 'Frutdev\LaravPck\Controllers\PckController@getCurrentUser');
Route::get('/pckArea', 'Frutdev\LaravPck\Controllers\PckController@getArea');
Route::post('/pckArea', 'Frutdev\LaravPck\Controllers\PckController@postArea');
Route::get('/{Area}/pckZones', 'Frutdev\LaravPck\Controllers\PckController@getAreaZones');
Route::post('/{Area}/pckZone', 'Frutdev\LaravPck\Controllers\PckController@postAreaZone');
});

路由未经过身份验证。

我尝试使用网络中间件,但在未登录时仍然可以查看/访问路由。

我尝试使用 auth 中间件,但即使在使用系统中的默认 Laravel 登录(未更改)登录后,我也无法访问路由。它说我未经授权,即使在登录后也是如此。知道吗?

GET /login 每当我尝试使用 auth 中间件到 /pckOne 时都会返回 302 Found 状态。

【问题讨论】:

  • 我上次使用 Laravel 时,用于身份验证的中间件称为 auth 而不是 web

标签: php laravel middleware


【解决方案1】:

要使身份验证中间件发挥作用,您需要以下内容:

Auth::routes();

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

            // Home Controller After Logging In
            Route::get('/', 'HomeController@index')->name('home');
        });

这意味着它将在运行 GET 路由之前检查身份验证。如果您已登录,那么它就会运行,如果没有,您的中间件会将足够的重定向返回到登录页面作为示例。

【讨论】:

  • 我刚试了一下,用它无法访问/home。我把它放在默认的routes/web.php 并禁用整个东西。
  • 在将中间件添加到路由后,您是否修改了用于身份验证的中间件?
猜你喜欢
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
相关资源
最近更新 更多