我正在创建一个中间件,该中间件将处理授权,比如检查角色,然后进行授权。但当我做$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角色并消除错误。