Size: a a a

GraphQL — русскоговорящее сообщество

2017 August 09

OR

Oleg R. in GraphQL — русскоговорящее сообщество
так проще имхо
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
в запросе каждом просто добавляй токен юзера
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
на бэке прежде чем обрабатывать запрос - тащи юзера по токену и закидывай айди в request, в resolve - функции запроса у тебя один из аргументов - это request и там ты уже сможешь определить че за юзер
источник

NS

Nikita Stenin in GraphQL — русскоговорящее сообщество
Oleg R.
так проще имхо
Кстати да, есть и такой вариант. Но чем он лучше? Почему все не сделать в одном месте?)
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
так исторически сложилось (с)
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
ну тебе так надо будет в каждом запросе тащить из заголовков токен, потом по нему смотреть в редисе что за юзер и тд и тп - выносишь в отдельную мидлвару а в графкуэле уже пользуешься результатом, не зря умы придумали мидлварную архитектуру)
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
а про то что, логин/логаут - отдельно, остальные запросы отдельно - ну тут хз, можно конечно, делать query user {  ... } и если 401 - mutation login (user, pass) { id, name, ... }
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
если с нуля писать - наверно лучше,
ну я вот встраиваю в существующее кусок - там авторизация уже напилена, там получается только пробрасывать токен в запросы
источник

S

Sergey in GraphQL — русскоговорящее сообщество
Oleg R.
а про то что, логин/логаут - отдельно, остальные запросы отдельно - ну тут хз, можно конечно, делать query user {  ... } и если 401 - mutation login (user, pass) { id, name, ... }
а где у apollo отлавливать 401?
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
errors же
источник

S

Sergey in GraphQL — русскоговорящее сообщество
там вроде кода ошибки нет
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
а ну да, там же типа 200 всегда, ну можно в теле отправить 401))
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
вот-вот, про то, что проще авторизацию отдельно))
источник

NS

Nikita Stenin in GraphQL — русскоговорящее сообщество
Oleg R.
а про то что, логин/логаут - отдельно, остальные запросы отдельно - ну тут хз, можно конечно, делать query user {  ... } и если 401 - mutation login (user, pass) { id, name, ... }
Просто по сути чтобы получить токен - надо его создать. Вроде как мутация подходит, так же и с логаут - удаление (сброс) токена.
источник

S

Sergey in GraphQL — русскоговорящее сообщество
Nikita Stenin
Просто по сути чтобы получить токен - надо его создать. Вроде как мутация подходит, так же и с логаут - удаление (сброс) токена.
по идее достаточно удалить Header для logout мутация не нужна
источник

S

Sergey in GraphQL — русскоговорящее сообщество
ну и очистить store
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
Nikita Stenin
Просто по сути чтобы получить токен - надо его создать. Вроде как мутация подходит, так же и с логаут - удаление (сброс) токена.
а если у тебя вторая вкладка открыта - токен то создан, если создашь - будет 2 токена? тут надо тащить user { token } и его результат пробросить в клиента тогда?
источник

OR

Oleg R. in GraphQL — русскоговорящее сообщество
хз кароч как-то странно)
источник

NS

Nikita Stenin in GraphQL — русскоговорящее сообщество
А разве localStorage доступен не на всех вкладках? Просто перед каждым запросом добавлять токен в заголовок. На второй вкладке уйдёт мутация уже с токеном. В этом случае просто не создавать новый, а отправить существующий. Или вообще выбросить ошибку. Разве не так? Отдельные маршруты для логина в этом случае могут иметь такую же проблему вроде как
источник