首页 > 解决方案 > Laravel 5.8 Multiple middlewares using guards and specific options for each guard

问题描述

I have a laravel application that allows both admins and customers to gain access to it and for each one of them will have specific permissions using 2 separated tables for each type of user to auth and 2 different guards. what I need now is to give customers access specific methods inside the controller and the admin have access to all methods.

class OrdersController extends Controller
{
    public function __construct()
    {
        $this->middleware(['auth:client'])->only(['index', 'create', 'store', 'edit', 'printOrder']);
        $this->middleware('auth:admin');
    }

but it works fine for the client and it's not working for the admin

标签: laravellaravel-5laravel-middlewarelaravel-authenticationlaravel-guard

解决方案


You have two options

  1. define the desired middleware on the corresponding routes
Route::get('/some-route', [
    'uses' => 'OrdersController@create',
    'as' => 'create-order',
])->middleware('auth:client');
  1. check inside the method, if the correct auth took place auth('auth:client')->check()

推荐阅读