$ request-> user() - > role errror - 尝试获取非对象的属性

时间:2016-04-09 18:21:56

标签: php laravel laravel-5 laravel-5.2 laravel-middleware

我正在创建一个中间件,它将处理授权,然后检查角色,然后进行授权。但是当我在做$role = $request->user()->role;

它给了我错误Trying to get property of non-object。我在这里做错了什么。

以下是我的中间件类的摘录

RoleMiddleware

namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use App\Http\Requests;

class RoleMiddleware
{
    public function handle($request, $next) {
    $role = $request->user()->role;

此外,我想了解其中的差异,并想知道哪个最好,我是否应该授权使用中间件,政策或门面?

感谢帮助,

谢谢, Sambhav

1 个答案:

答案 0 :(得分:1)

没有“最佳”的方法来授权用户。您可以使用中间件,策略或Gate或将它们混合在一起。

在您的情况下,问题是:

$role = $request->user()->role;

因为用户并不总是登录。

所以你应该改变它:

$role = $request->user() ? $request->user()->role: 'guest';

为未登录的用户设置guest角色并摆脱错误。