我需要检查用户是否已登录并在我的中间件中检查其用户名,以验证他们是否是管理员以限制对某个页面的访问 . 我如何获得他们的用户名?
使用Auth :: user()从另一个中间件给我一个错误 .
ErrorException in VerifyCsrfToken.php line 136:
Trying to get property of non-object
路线
Route::get('admin', ['middleware' => 'admin', function() {
echo "You're an admin!";
}]);
中间件
class VerifyAdmin
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::user()->username == "enayet123")
return $next($request);
}
}
2 回答
你必须回来
即使你的条件失败,所以下一个中间件可以有请求 . 如果你在条件之外移动那个,那应该解决你的问题 .
您的代码应如下所示:
您应始终
return $next($request)
这是从特定中间件传递代码/请求所必需的为了获取用户/电子邮件等用户的详细信息,您需要使用$ request-> user()而不是Auth :: user()
然后,您应该通过在User模型中创建方法并在中间件中调用该方法来检查用户是否是管理员