Laravel- 'auth' 中间件不工作

Laravel- 'auth' middleware not work

我用Laravel 5.6.33。我希望用户只有在 he/she 签署 In/Up 后才能访问 'dashboard' 页面。当我使用 'guest' 中间件时,用户根本无法访问该页面,而当我使用 'auth' 中间件时,用户始终可以访问该页面。我该怎么办?

Route::group(['middleware' => ['web']], function (){
    Route::get('/dashboard', [
        'uses' => 'UserController@getDashboard',
        'as' => 'dashboard',
        'middleware' => 'auth'
    ]);
});

我还在 getDashboard 函数或 UserController 的构造函数中添加了 $this->middleware('auth');,但它不起作用。我该怎么办?

在Kernel.phpauth地址如下:

 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,

如果您使用 Laravel 5.6,则无需使用 web 中间件包装您的路由,只要将它们放入 routes\web.php 文件即可。 Laravel 在 RouteServiceProvider.php.

中为您制作了这个

为了您的目的,auth 中间件应该可以工作。试试这个而不是你拥有的:

Route::middleware('auth')->group(function() {
  Route::get('/dashboard', [
    'uses' => 'UserController@getDashboard',
    'as' => 'dashboard'
  ]);
});

你什么都不用做。

  • 只需添加以下代码即可。
    Route::group(['middleware'=>'auth'],function () {
    //you can create the list of the url or the resource here to block the unath users.
    Route::resource('brands', 'BrandController');
    Route::resource('products', 'ProductController');
    });

或者在你想屏蔽的控制器上使用构造函数。

public function __construct()
{
    $this->middleware('auth');
}

它将阻止该控制器上的所有功能,如索引、创建、存储、更新、删除。只有 auth 可以使用这些功能。