Laravel 5.4 Middleware Не могу определить охрану

У меня есть следующие файлы:

routes.php

Route::get('client-portal', 'DashboardController@index');

DashboardController.php

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

auth.php

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'client-users' => [
'driver' => 'session',
'provider' => 'client-users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'client-users' => [
'driver' => 'eloquent',
'model' => \App\Models\ClientPortal\User::class
],
],

Authenticate.php

public function __construct(Guard $auth) {
$this->auth = $auth;
}

public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
dd($this->auth);
return redirect()->guest('login');
}
}

return $next($request);
}

Всякий раз, когда я вошел через client-users и перейдите к /client-portal. dd от Authenticate.php возвращает SessionGuard экземпляр, с атрибутом name установлен в web

Но я указал ‘auth: client-users’ в конструкторе контроллера.
Поэтому моей первой мыслью было, что промежуточное программное обеспечение для аутентификации было глобальным промежуточным программным обеспечением, поэтому я проверил это, но это не так. Если я удаляю промежуточную строку из конструктора, страница отображается.

Кто-нибудь знает, в чем проблема?

Спасибо.

1

Решение

Видимо экземпляр, который передается __construct не поддерживает : запись для указания охранника. это Authenticate.php был оригинальный файл из предыдущей версии laravel. guard атрибут передается в качестве третьего параметра handle,

Я исправил код следующим образом:

class Authenticate
{
public function handle($request, Closure $next, $guard = null)
{
auth()->shouldUse($guard);
if (auth()->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}

return $next($request);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector