Получить данные пользователя из токена

Я создавал API с использованием symfony и Graphql (youshido / graphql-bundle), я хочу получить пользователя из токена внутри API. Я должен передать имя пользователя в качестве параметра в запросе, или я могу получить пользователя из токена для всех запросов?

какое лучшее решение? и как я могу получить токен для функции разрешения?

public function resolve($value, array $args, ResolveInfo $info)
{
    return $this->container->get('resolver.user')->save($args);
}

Спасибо.

Пожалуйста, свяжите свою конфигурацию security.yml, все зависит от этого. Если вы находитесь на аутентифицированном маршруте, вы сможете получить пользователя из хранилища токенов ($this->getUser() с контроллеров). Вы также можете получить пользователя из службы tokenStorage во всем своем приложении.

Mcsky 10.05.2018 20:21

Я обновил вопрос

Naruto Uzumaki 10.05.2018 21:01
$tokenStorage = $this->container->get('security.token_storage'); $user = $tokenStorage->getToken()->getUser(); if ($user instanceof User) { // The user which is calling you is currently authenticated } else { // Unfortunately the user IS'NT authenticated :/ } Попробуйте, если вы зайдете в else, у вас ошибка конфигурации app/config/security.yml
Mcsky 11.05.2018 10:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
679
2

Ответы 2

Если вы разрабатываете API, вы должны аутентифицировать своего пользователя в каждом запросе с помощью токена на предъявителя. Apis не имеют состояния: они не хранят информацию cookie в вашем браузере (вы могли бы, но это бессмысленно). Вместо этого вы передаете токен в заголовке авторизации каждого запроса, и это ваш способ аутентификации.

Вы можете использовать проверенный lexik / jwt-аутентификации-связка для реализации системы аутентификации веб-токенов json. Но сначала убедитесь, что вы понимаете, что такое JWT и как их правильно использовать.

решение состоит в том, чтобы ввести хранилище токенов в конструктор, а затем получить от него пользователя

public function __construct(TokenStorage $tokenStorage)
{
    $this->tokenStorage = $tokenStorage;
}

чтобы получить пользователя из токена:

 $user = $this->tokenStorage->getToken()->getUser();

Другие вопросы по теме