Я работаю над проектом Laravel. Я создаю GraphQL API, используя библиотеку Lighthouse. Я использую эту библиотеку для аутентификации паспорта, https://github.com/joselfonseca/lighthouse-graphql-passport-auth. Я мог бы использовать конечные точки из этой библиотеки и сгенерировать токены доступа аутентификации. Я заранее установил и настроил Паспорт. Проблема в том, что когда я использую конечную точку / запрашиваю защищенную мутацию, она не работает. Даже если токен присутствует в заголовке, он всегда возвращает false для проверки, вошел ли пользователь в систему.
У меня есть следующее объявление схемы.
extend type Mutation @middleware(checks: ["api", "auth.restaurant-admin"]) {
updateUserProfile(input: UpdateUserProfileInput): User! @updateUserProfileValidation
}
Как видите, это буквально мутация, защищенная промежуточным программным обеспечением api и auth.restaurant-admin.
Ниже приводится моя реализация промежуточного программного обеспечения auth.restaurant-admin.
<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Response;
class AuthRestaurantAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (auth()->check() and auth()->user()->hasRole(User::ROLE_RESTAURANT_ADMIN)) {
if (auth()->user()->restaurant) {
return $next($request);
} else {
return abort(Response::HTTP_FORBIDDEN, 'There is no restaurant assigned to the user');
}
}
return abort(Response::HTTP_FORBIDDEN, 'You are not authorised to access this part of the application');
}
}
Метод auth()->check()
всегда возвращает false, даже если действительный токен доступа присутствует в заголовке. Я передаю токен на игровой площадке GraphQL, как показано ниже.
[![enter code here][1]][1]
Когда я извлекаю токен из заголовка, например $ request- ›header (« Авторизация »), я вижу ожидаемое значение. Но auth () - ›check () просто не работает. Что не так и чего не хватает в моем коде? Как я могу это исправить?