если условие esle не работает внутри конструктора для промежуточного программного обеспечения в laravel 5.4 - PullRequest
0 голосов
/ 30 августа 2018

Я могу использовать только одно промежуточное ПО одновременно внутри конструктора. Я хочу использовать условие if else внутри конструктора или два промежуточных ПО.

Я могу использовать только промежуточное программное обеспечение внутри конструктора, и если условие не работает, также

Пример:

Если еще

class HRJob extends Controller
{   
    public function __construct()
    {
        if(Auth::guard('admin'))
        {
            $this->middleware('auth:admin');
        }
        else
        {
            $this->middleware('auth');
        }
    }
    public function userdetails()
    {
        dd(Auth::user());
    }
}

Два промежуточных ПО

class HRJob extends Controller
{  
    public function __construct()

        $this->middleware('auth:admin');
        $this->middleware('auth');
    }

    public function userdetails()
    {
        dd(Auth::user());
    }
}

1 Ответ

0 голосов
/ 30 августа 2018

в вашем случае нет необходимости в двух промежуточных программах.

public function __construct()
{
    $this->middleware('auth');
}

эквивалентно тому, что вы пытаетесь сделать, поскольку «auth» все еще действует для «auth: admin».

но вы все равно можете поместить свое промежуточное ПО в файлы Routes (web.php / api.php), как это

Route::group(['middleware'=>'auth:admin'],function (){
    Route::get('/', 'HRJob@userdetailsAdmin');
});

Route::group(['middleware'=>'auth'],function (){
    Route::get('/', 'HRJob@userdetails');
});

надеюсь, это поможет.

--- редактировать ---

в вашем случае, с двумя разными таблицами для аутентификации и без создания пользовательского промежуточного программного обеспечения для «любого аутентификации», вы просто пропускаете метод check ():

if (Auth::guard('admin')->check()) {
    $this->middleware('auth:admin');
} else {
    $this->middleware('auth');
}

что эквивалентно

if (!Auth::guard('admin')->check()) {
    $this->middleware('auth');
}
...