Я не знаю, является ли это наилучшей практикой, но мы внедрили специальное промежуточное ПО под названием auth.optional, которое расширяет обычное промежуточное ПО auth.api.Он в основном разрешает запрос к фактической конечной точке, а не выбрасывает AuthException, когда токен недействителен или присутствует.
Поскольку обычное промежуточное ПО api не разрешает, если в запросе нет токена, то это бесполезно для конечных точек без аутентификации.
use Illuminate\Auth\Middleware\Authenticate;
class OptionalAuthenticate extends Authenticate {
public function handle($request, Closure $next, ...$guards) {
try {
$this->authenticate(array('api'));
} catch(AuthenticationException $e) {
//Do nothing
}
return $next($request);
}
}
Проверьте класс Authenticate, который мы расширяем, чтобы увидеть, гдеон генерирует исключение AuthenticationException.