Пользователь Null Auth внутри Middleware - PullRequest
0 голосов
/ 19 сентября 2019

Глобальные промежуточные программы, которые запускаются для каждого запроса на каждом маршруте:

protected $middleware = [
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \App\Http\Middleware\TrustProxies::class,
        \Barryvdh\Cors\HandleCors::class,
        \Spatie\Cors\Cors::class,
    ];

Группы, в которые упакованы промежуточные программы:

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
        'api' => [
            'throttle:100000,1',
            'bindings',
            \Barryvdh\Cors\HandleCors::class,
        ],

    ];

Мои названные красивые промежуточные программы:

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,  
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'jwt.auth' => \Tymon\JWTAuth\Http\Middleware\Authenticate::class,
        'jwt.refresh' => \Tymon\JWTAuth\Http\Middleware\RefreshToken::class,
        'log.request' => \App\Http\Middleware\LogRequest::class,
        'admin' => \App\Http\Middleware\AdminMiddleware::class,
    ];

Порядок промежуточного программного обеспечения, сверху вниз:

protected $middlewarePriority = [
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\Authenticate::class,
        \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \Illuminate\Auth\Middleware\Authorize::class,
    ];

Способ, которым я называю мой маршрут:

Route::get('show/question', 'APIController@getQuestion')->name('getQuestion')->middleware('admin');

Мое промежуточное ПО AdminMiddleware.php content:

<?php

namespace App\Http\Middleware;

use Closure;
//use App\Http\Middleware\Auth;

use Illuminate\Support\Facades\Auth;
use Illuminate\Contracts\Auth\Guard;

class AdminMiddleware
{   
    public function handle($request, Closure $next)
    {
        dd(Auth::user());
        dd($request->all());
        return view('login');
    }
}

Я попытался поместить свое промежуточное ПО последним в конец списка, я попытался добавить его в «сеть» внизу, ничего не работает.Есть идеи?Мне нужно обработать объект аутентифицированного пользователя в промежуточном программном обеспечении.

1 Ответ

0 голосов
/ 19 сентября 2019

Это просто потому, что у вас нет промежуточного программного обеспечения для аутентификации на этом маршруте :)

juste do:

Route::get('show/question', 'APIController@getQuestion')
    ->name('getQuestion')
    ->middleware('auth', 'admin');
...