首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中间件中的身份验证用户为空

中间件中的身份验证用户为空
EN

Stack Overflow用户
提问于 2019-09-19 22:29:20
回答 1查看 42关注 0票数 0

全局中间件,为每个路由上的每个请求运行的中间件:

代码语言:javascript
运行
复制
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,
    ];

打包中间件的组:

代码语言:javascript
运行
复制
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,
        ],

    ];

我命名的漂亮中间件:

代码语言:javascript
运行
复制
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,
    ];

中间件的顺序,从上到下:

代码语言:javascript
运行
复制
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,
    ];

我把我的路线命名为:

代码语言:javascript
运行
复制
Route::get('show/question', 'APIController@getQuestion')->name('getQuestion')->middleware('admin');

我的中间件AdminMiddleware.php内容:

代码语言:javascript
运行
复制
<?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');
    }
}

我试着把我的中间件放在列表的最后,我试着把它加到最下面的'web‘里,什么都没用。有什么想法吗?我需要在中间件中处理认证用户的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-19 22:41:42

这只是因为您在此路由中没有身份验证中间件:)

就这么做:

代码语言:javascript
运行
复制
Route::get('show/question', 'APIController@getQuestion')
    ->name('getQuestion')
    ->middleware('auth', 'admin');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58013325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档