Я создавал API, используя symfony и Graphql (youshido / graphql-bundle), я хочу получить пользователя из токена внутри API.
Я должен передать имя пользователя в качестве параметра в запросе, или я могу получить пользователя из токена для всего запроса?
какое лучшее решение? и как я могу получить токен на функцию разрешения?
public function resolve($value, array $args, ResolveInfo $info)
{
return $this->container->get('resolver.user')->save($args);
}
благодарю вас.
Если вы разрабатываете API, вы должны аутентифицировать своего пользователя в каждом запросе, используя токен на предъявителя. Apis не имеет состояния: они не хранят информацию о cookie в вашем браузере (вы можете, но это бессмысленно). Вместо этого вы передаете токен в заголовке авторизации каждого запроса, и это ваш способ аутентификации.
Вы можете использовать проверенные Lexik / JWT-аутентификация расслоение внедрить систему авторизации веб-токенов json. Но сначала убедитесь, что вы понимаете, что такое JWT и как их правильно использовать.
решение состоит в том, чтобы ввести TokenStorage в конструктор, а затем получить от него пользователя
public function __construct(TokenStorage $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
получить пользователя из токена:
$user = $this->tokenStorage->getToken()->getUser();