laravel 5.2 appで管理ルートを保護するミドルウェアを作ってみたい。 USER_TYPEは私のDBにusersテーブル内のフィールドではなく、個別の表に:ミドルウェアが期待どおりに動作しない - Laravel
class AdminMiddleware
{
public function handle($request, Closure $next)
{
$authedUserID = Auth::id();
$user = User::query()
->leftjoin('users_user_types as uut', 'uut.user_id', '=', 'users.id')
->where('uut.user_id',"=","$authedUserID")
->get(['users.*',
'uut.user_type_id as userType'])->first();
if ($user['userType'] !=4)
{
return redirect('/home');
}
return $next($request);
}
}
管理者user_type_idは、私は、このミドルウェアを作った4 ですkernel.php中:
'admin' => \App\Http\Middleware\AdminMiddleware::class
、これは私が上で私のミドルウェアを適用したい管理者ルートの1つである:
Route::get('ptyadmin', '[email protected]')->middleware('admin');
問題は、私が管理者ユーザ(USER_TYPE = 4)、または通常のユーザでこのルートに行くとき(USER_TYPE = 1)、それは両方のケースでは/ homeにリダイレクトということです!
なぜこれが起こり、どうすれば修正できますか?
どこのルートでご 'auth' middlewarがありますか? – mrabbani
私はAdminControllerの内側にそれを置く: パブリック関数の__construct(ユーザー$ユーザー、JWTAuth $ jwtauth) { ます$ this->ミドルウェア( 'jwt.auth'、[=> [ ] 'を除きます']); } @mrabbani –
'AdminMiddleware'の' dd(Auth :: id()) 'をダンプして値を確認しますか? – mrabbani