【发布时间】:2018-05-31 16:38:41
【问题描述】:
如果用户通过调用Auth::user() 进行身份验证,我会尝试签入中间件
但它返回null。我在Kernel.php 的protected $middleware 部分列表中将此中间件称为最后一个。有没有办法从中间件检查用户是否经过身份验证,或者我应该如何以另一种方式进行?
补充:我正在使用 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);
}
}
【问题讨论】:
-
您是否尝试过使用
$request->user()或auth()辅助函数? -
它应该可以工作看看我的代码工作得很好:github.com/avored/ecommerce/blob/master/src/Http/Middleware/…
-
试试看: if (Auth::check()) { // 用户登录... }
-
试试这个 Auth::guard('user')->check()
-
确保在您的中间件之前启用
StartSessions中间件。如果您在调用Auth::user()之前还没有开始会话,它将返回 null。 laravel.com/api/5.0/Illuminate/Session/Middleware/…
标签: laravel laravel-5 laravel-middleware