2016-04-09 9 views
0

私は、権限をチェックして承認するというミドルウェアを作成中です。しかし、私がやっているとき$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

すべてのユーザーに役割があることを確認してください。 –

+0

はい、彼らはDBにあり、私は '$ request-> user() - > role'から私のコントローラの1つでそれらをフェッチしています – Sambhav

答えて

1

は、ユーザーを承認するための "最良の" 方法は方法はありません、認識されます。ミドルウェア、ポリシー、ゲートを使用したり、それらを混在させることができます。

あなたのケースでは問題がある:。ためguest役割を設定する

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

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

ユーザーは常にログインしていないので、

だから、そうのようにそれを変更する必要がありますユーザーをログに記録せず、エラーを取り除く。

+0

Cool、ありがとうMarcin :) – Sambhav