3

ユーザーが認証されているかどうかを確認してから、ページへのアクセスを許可する以下のルートがあります

<?php
Route::group([
    'middleware' => 'auth',
], function() {

    Route::get('/Categories-List', 'Skills\Category_Controller@index');
});

私のauth()->user()ではRoleID、ユーザーが管理者であるか、他の役割を持っているかを確認する必要があります。が 1かどうかを確認RoleIDしてから、ページへのアクセスのみを許可します。

Laravel 5.1で認証とともに認可を設定できますか

4

2 に答える 2

8

わかりましたので、必要なのはそれを作成AdminMiddlewareしてルートに追加することです。

まず、Userモデルを開き、追加のメソッドを追加します。

public function isAdmin() 
{
   return $this->RoleID == 1;
}

コンソールで実行します。

php artisan make:middleware AdminMiddleware

メソッドを開き、次のようAdminMiddleware.phpに変更します。handle

if (!\Auth::user()->isAdmin()) {
    if ($request->ajax()) {
        return response('Admin account required.', 401);
    } else {
        return redirect('/'); // set here any url you need
    }
}

return $next($request);

開いて、プロパティの新しいエントリapp/Http/Kernel.phpに追加します。$routeMiddleware

'isAdmin' => \App\Http\Middleware\AdminMiddleware::class,

最後にルートを変更します

'middleware' => 'auth',

の中へ

'middleware' => ['auth', 'isAdmin'],

ここでの順序は重要です。ここで順序を変更すると、ユーザーがログインしていない場合に予期しない例外が発生します。

必要に応じて、このルートでユーザーがログインしていない場合isAdmin以外のリダイレクトを行いたい場合に備えて、ここでミドルウェアのみを使用することもできます。authこの場合、 と のメソッドをマージしauthisAdmin、ニーズに合わせる必要があります。

于 2015-12-24T09:45:20.807 に答える
2

あなたがしたいことは、複数のミドルウェアを実行することです.1つはユーザーを認証し、もう1つは彼のアクセスレベルをチェックします。

やりたいことは、配列内のミドルウェアを次のように定義することです。

<?php
Route::group([
    'middleware' => ['auth','isAdmin'],
], function() {

    Route::get('/Categories-List', 'Skills\Category_Controller@index');
});

isAdmin必要なチェックを行うミドルウェアを追加したことがわかります。自分でミドルウェアを作成するだけです。

ここのルートのミドルウェアに関する他の多くの情報: http://laravel.com/docs/master/middleware#assigning-middleware-to-routes

于 2015-12-17T15:34:04.630 に答える