首页 > 解决方案 > 从中间件检查 Auth::user()

问题描述

如果用户通过调用进行身份验证,我尝试检查中间件,Auth::user() 但它返回 null。我将此中间件称为protected $middleware. Kernel.php有没有办法从中间件检查用户是否已通过身份验证,或者我应该如何以另一种方式进行?

补充:我正在使用 Zizaco Entrust。可能是它不起作用的原因我正在使用 Laravel 5.5

我的应用程序/HTTP/Kernel.php:

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\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,
        \App\Http\Middleware\FirstLoginPasswordChange::class,
    ];

我的 FirstLoginPasswordChange 中间件:

use Illuminate\Support\Facades\Auth;
use Zizaco\Entrust\Entrust;

    public function handle($request, Closure $next)
    {
        dd(Auth::user()); // returns null
// or
        dd(Auth::check()); // returns false
// or
        dd(\Entrust::user()); // returns null

        return $next($request);
    }
}

标签: laravellaravel-5laravel-middleware

解决方案


通过使用这篇文章 将中间件从protected $middlewareKernel.php部分移动到 Kernel.php 部分解决了问题: http ://laraveldaily.com/password-expired-force-change-password-every-30-days/protected $routeMiddleware


推荐阅读