【发布时间】:2017-11-07 15:23:14
【问题描述】:
我创建了一个自定义中间件,用于检查请求是由拥有资源的用户提交还是由管理员拥有。
Route::middleware(['web', 'selforadmin'])->group(function () {
Route::post('users/update-account/{id}', 'UsersController@UpdateAccount');
Route::post('users/update-email/{id}', 'UsersController@UpdateEmail');
Route::post('users/update-password/{id}', 'UsersController@UpdatePassword');
});
然后是中间件处理程序:
public function handle($request, Closure $next)
{
print_r($request->all());
print_r($request->user());
dd();
return $next($request);
}
但我不知道为什么这里无法访问用户模型。我读到请求需要首先从网络中间件传递,所以我做了,但仍然无法访问这个中间件。
它在 $request->user() 或 Auth::user() 上给出 null
我使用的是 Laravel 5.4
编辑:
当我看到其他输入时,正在调用中间件。只有 Auth 为空。并且用户已登录。
【问题讨论】:
-
你试过
\Aith::user()或auth()->user()吗?? -
我不需要中间件中的 Auth 外观。根据文档请求应该有用户模型,但是我已经尝试过了,它给出了 null。
-
auth()->id()呢?您使用的是 laravel 自动生成的身份验证还是自定义身份验证? -
默认 Laravel 身份验证。虽然我将用户移动到不同的命名空间,但这应该不是问题,因为我已经在 authconfig 中更新了它。
-
其他一切正常。它只是这个中间件,我无权访问用户模型。
标签: laravel routing middleware