$request->;user()->;角色错误-试图获取非对象的属性


$request->user()->role errror - trying to get property of non-object

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

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

这是我的中间件类的摘录

角色中间件

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;

此外,我想知道其中的区别,并想知道哪一个是最好的,我应该授权使用中间件、Polices还是gate facade?

感谢帮助,

谢谢,Sambhav

没有"最佳"方法来授权用户。您可以使用中间件、策略或Gate,也可以将它们混合使用。

在你的情况下,问题是:

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

因为用户并不总是登录。

所以你应该这样改:

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

为未登录的用户设置CCD_ 3角色并消除错误。