laravel 5.5获取构造函数内的用户详细信息

时间:2017-09-11 17:18:34

标签: php laravel laravel-5.5

我正在构建一个具有多个用户角色和操作的应用程序。我确实遵循了官方的laravel文档(https://laravel.com/docs/5.5/middleware#middleware-parameters)。

但是在我的控制器的构造函数中(我称之为上述中间件)我正在使用Auth facade获取用户详细信息。我知道如何使用Auth facade,我已经在我的应用程序内的几个地方实现了它。但是当我在构造函数中使用它时,它返回null(在登录状态 - 我仔细检查过它。)

我实现了这个,我必须调用两个控制器(因为只有注册用户才能访问该页面)

public function __construct()
{
    $role = Auth::user()->role;
    $this->middleware('auth');
    $this->middleware('checkRole:$role');
}

PS:我试图将$ role变量初始化为受保护且在构造函数之外,仍然无效。任何建议都会有所帮助

谢谢。

2 个答案:

答案 0 :(得分:2)

那是因为构造函数是在中间件之前创建的,这就是它返回null的原因。

这个答案可以解决您的问题:Can't call Auth::user() on controller's constructor

答案 1 :(得分:2)

如果您为“前端”用户和“ admin”使用相同的用户表,并且想在管理控制器的构造函数中应用条件。

您可以在下面使用。

FROM node:lts-alpine

WORKDIR /app

COPY node_modules node_modules/
COPY app.js ./
COPY dist/ public/

EXPOSE 8080
CMD ["node", "app.js"]

在构造函数中,您可以使用以下代码。

auth()->user()

但是我更喜欢在单独的中间件类中处理它们,而不是在控制器的构造函数中编写它们。