【问题标题】:Laravel New Middleware not workingLaravel 新中间件不工作
【发布时间】:2017-07-20 07:14:50
【问题描述】:

我的项目有问题,我只是试图在几个小时内修复,但它仍然无法正常工作。

我创建了一个新的中间件 - 这是我的代码:

    class CpanelAuthentication
        {
            public function handle($request, Closure $next, $guard = 'player')
            {
                if (Auth::guard($guard)->check()) {
                    return redirect('cpanel');
                }
                return $next($request);
            }
        }

我也只是配置提供者和守卫。 - 这是我的 auth.php

    'guards' => [
                    'web' => [
                        'driver' => 'session',
                        'provider' => 'users',
                    ],

                    'api' => [
                        'driver' => 'token',
                        'provider' => 'users',
                    ],

                    'player' => [
                        'driver' => 'session',
                        'provider' => 'player',
                    ],
                ],

           'providers' => [
                'users' => [
                    'driver' => 'database',
                    'table' => 'tbl_users'
                ],

                'player' => [
                    'driver' => 'database',
                    'table' => 'tbl_player'
                ],
            ],

我也在 Kernel.php 中注册了这个中间件 - 这是我的 Kernel.php

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],

        'player' => [
            \App\Http\Middleware\CpanelAuthentication::class,
        ],
    ];

    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'player' => \App\Http\Middleware\CpanelAuthentication::class
    ];

最后我把这个中间件放在这样的路由组中:

Route::group(['middleware'  => 'player'], function() {
        Route::group(['prefix' => 'cpanel', 'namespace' => 'Cpanel'], function() {
            Route::get('/', [
                'as'    => 'getCpanel',
                'uses'  => 'CpanelController@getCpanel'
            ]);
            Route::group(['prefix' => 'investment'], function() {
                Route::get('/', [
                    'as' => 'getCpanelInvestment',
                    'uses' => 'InvestmentController@getCpanelInvestment'
                ]);
            });
        });
    });

但是中间件不工作。当我尝试访问 url

面板/投资

虽然用户没有经过身份验证,但它仍然通过中间件并在里面重定向!

谁能帮帮我!

非常感谢!

【问题讨论】:

    标签: laravel laravel-routing laravel-5.4 laravel-middleware


    【解决方案1】:

    您正在调用check(),它会检查用户是否已通过身份验证。

    如果您想查看他们是否未登录,请致电Auth::guard($guard)->guest()

    【讨论】:

      【解决方案2】:

      中间件:

       class CpanelAuthentication
         {
                  public function handle($request, Closure $next, $guard = 'player')
                  {
                      if (Auth::guard($guard)->check()) {
                           return $next($request);
                      }
                       return redirect('/login');
                  }
          }
      

      路线:

      Route::group(['middleware' => ['App\Http\Middleware\CpanelAuthentication']], function () {
               //routes
      });
      

      不注册内核试试

      【讨论】:

        猜你喜欢
        • 2018-07-07
        • 2017-09-10
        • 1970-01-01
        • 2018-12-30
        • 2016-05-26
        • 2019-02-22
        • 1970-01-01
        • 2017-12-28
        相关资源
        最近更新 更多