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;

また、違いとどちらが最適かを知りたいのですが、ミドルウェア、ポリシー、またはゲート ファサードの使用を承認する必要がありますか?

助けていただければ幸いです。

ありがとう、サンバフ

4

1 に答える 1

1

ユーザーを承認するための「最善の」方法はありません。ミドルウェア、ポリシー、またはゲートを使用するか、それらを組み合わせて使用​​できます。

あなたの場合、問題は次のとおりです。

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

ユーザーが常にログインしているわけではないためです。

したがって、次のように変更する必要があります。

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

ログインしていないユーザーの役割を設定guestし、エラーを取り除きます。

于 2016-04-09T18:24:39.307 に答える