【问题标题】:Laravel- 'auth' middleware not workLaravel-'auth' 中间件不起作用
【发布时间】:2018-08-29 01:56:47
【问题描述】:

我使用 Laravel 5.6.33。我希望用户只有在他/她登录/注册后才能访问“仪表板”页面。当我使用“guest”中间件时,用户根本无法访问该页面,而当我使用“auth”中间件时,用户始终可以访问该页面。我该怎么办?

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

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

在Kernel.php中auth地址如下:

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

【问题讨论】:

    标签: laravel-5.6 laravel-middleware


    【解决方案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'
      ]);
    });
    

    【讨论】:

    • IDK 出了什么问题,但在我的 laravel 5.7 Route::group(['midddleware' => ['auth']], function () { 这不起作用。这个Route::middleware('auth')->group(function() { 有效。
    【解决方案2】:

    你什么都不用做。

    • 只需添加以下代码。
    Route::group(['middleware'=>'auth'],function () { //您可以在这里创建url或资源的列表来阻止unath用户。 Route::resource('brands', 'BrandController'); Route::resource('products', 'ProductController'); });

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-27
      • 1970-01-01
      • 2018-07-03
      • 2016-04-01
      • 1970-01-01
      • 2016-05-17
      • 2017-01-06
      • 2016-05-16
      相关资源
      最近更新 更多