Я реализовал паспортную аутентификацию в Laravel и основной c auth. У меня есть UserController и внутри него, у меня есть метод конструктора:
public function __construct()
{
$this->middleware('auth.basic.once')->except(['index', 'show']);
$this->middleware('auth:api')->except(['index', 'show']);
}
Промежуточное программное обеспечение OnceBasi c:
public function handle($request, Closure $next)
{
if(Auth::guard('api')->check())
return $next($request);
else
return Auth::onceBasic() ?: $next($request);
}
В промежуточном программном обеспечении OnceBasi c я могу чтобы проверить, прошел ли пользователь аутентификацию с использованием auth:api
, я запрещаю аутентификации пытаться использовать onceBasic
, поэтому он работал правильно при использовании токена доступа. Но происходит сбой при попытке аутентификации с использованием OnceBasi c (электронная почта, пароль), потому что auth:api
пытается выполнить аутентификацию тоже, и не удается (пытается вызвать методы redirectTo()
внутри по умолчанию \App\Http\Middleware\Authenticate.php
)
У меня вопрос, есть ли способ использовать оба этих промежуточных программного обеспечения, чтобы только успешно аутентифицировать одно и предотвратить работу другого?