1

我正在创建一个中间件,它将处理授权说检查角色然后授权。但是当我在做$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;

另外我想知道区别并想知道哪个最好,我应该授权使用中间件、Policy 还是门面?

帮助表示赞赏,

谢谢, 桑巴夫

4

1 回答 1

1

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

在您的情况下,问题是:

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

因为用户并不总是登录。

所以你应该像这样改变它:

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

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

于 2016-04-09T18:24:39.307 回答