Laravel-'Auth'中间件不起作用

时间:2018-08-21 10:07:20

标签: laravel-5.6 laravel-middleware

我使用Laravel 5.6.33。我希望用户只有在登录后才能访问“仪表盘”页面。当我使用“来宾”中间件时,用户根本无法访问该页面,而当我使用“身份验证”中间件时,用户始终可以访问该页面。我该怎么办?

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

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

在Kernel.php中,auth地址如下:

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

2 个答案:

答案 0 :(得分:1)

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

您可以使用auth中间件。试试这个,而不是你拥有的:

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

答案 1 :(得分:0)

您什么都不要做。

  • 只需添加以下代码。
    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才能使用这些功能。