我正在创建一个中间件,它将处理授权,然后检查角色,然后进行授权。但是当我在做$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
答案 0 :(得分:1)
没有“最佳”的方法来授权用户。您可以使用中间件,策略或Gate或将它们混合在一起。
在您的情况下,问题是:
$role = $request->user()->role;
因为用户并不总是登录。
所以你应该改变它:
$role = $request->user() ? $request->user()->role: 'guest';
为未登录的用户设置guest
角色并摆脱错误。