@react_js

Страница 4895 из 5115
Станислав
27.09.2018
16:08:32
и есть ли хорошо если я выставляю в отдельных случаях “слать/не слать” токен?

Efim
27.09.2018
16:08:38
Что значит на валидность?

Станислав
27.09.2018
16:08:50
ну может он истек

и я по нему не могу получать данные

Google
Efim
27.09.2018
16:09:12
А клиент тут при чем?

Станислав
27.09.2018
16:09:28
дык я этот токен во втором запросе шлю и тот отвечает 401

Efim
27.09.2018
16:09:34
Сервер должен вернуть 401 или другую ошибку если токена нет

Или он истек

Станислав
27.09.2018
16:09:46
он и отвечает

Efim
27.09.2018
16:10:21
Ну вот, после того как ответил и делай логику которую хотел делать если токен не валиден

Станислав
27.09.2018
16:10:40
я этот токен отправляю с каждым запросом, это ок или не ок? Если да, то мне сервер отвечает 401 на то, что можно получить без токена

Станислав
27.09.2018
16:11:18
/items?token = объекты конкретно для юзера /items = просто список объектов /items?invalidToken = 401 еррор

токен, конечно же, не шлется в гет параметре))

Efim
27.09.2018
16:11:38
По моему у тебя какой-то оверхед с токеном

Valeriy
27.09.2018
16:11:59
Efim
27.09.2018
16:12:15
Ты не должен парсить куки из жса, более того куки должны быть httponly

Google
Станислав
27.09.2018
16:12:19
?

Efim
27.09.2018
16:12:42
Для банального кейса с авторизацией

Вместо этого твой аякс должен быть с включенными кредешненами

Valeriy
27.09.2018
16:13:28
для полного фарша и чувства сухости надо Bearer token в Authorized, jwt token в каком нить заголовке, в урле продублировать и с куками еще один

Станислав
27.09.2018
16:13:31
Ты не должен парсить куки из жса, более того куки должны быть httponly
я не парсю, userActions.get().catch(error => { cookie.remove(config.tokenCookieName); }); эта фигня делает запрос на /api/profiles/me и если еррор, то стирает куки

Valeriy
27.09.2018
16:13:53
при чем один куки будет бакенд выставлять другую куку фронт :)

Станислав
27.09.2018
16:14:09
? блин)

Efim
27.09.2018
16:14:12
Твой cookie это уже распарсенный куки ?

Станислав
27.09.2018
16:14:23
яясно, значит гомно сделал))

если мне после логина сервер отправляет токен вне кукисов, где мне его хранить?

Valeriy
27.09.2018
16:15:28
яясно, значит гомно сделал))
ну куки как минимум должны шифроваться на бакенде и не читаться в браузере

Efim
27.09.2018
16:15:53
В таком случае в сторе, но у тебя должна быть причина отправлять его вне кук

Есть бест практикс, выдумывать уже давно ничего не нужно)

Станислав
27.09.2018
16:16:29
понял)

Станислав
27.09.2018
16:17:05
хмм значит бэк должен в куках присылать, ок, допустим, он присылает что происходит если у меня авторизация через Authorization: Token blablabla?

чувствую себя идиотом ))

Valeriy
27.09.2018
16:20:23
ты шлешь на сервер логин и пароль, в ответ получаешь токен

сохраняешь его в локал сторадж

пихаешь в заголовок Autorization: Bearer {token}

Google
Valeriy
27.09.2018
16:21:24
при каждом запросе на сервер

и получаешь удовольствие

Станислав
27.09.2018
16:21:59
хехе не-а))

если вместо куков юзать локал сторейдж (что я и делал до этого), в целом проблема остается

при входе на сайт выполняются 2 запроса

/api/profiles/me /api/items

и вот во втором я получаю еррор не дожидаясь первого

если токен не валидный

Valeriy
27.09.2018
16:23:16
ну это зависит от схемы авторизации на вашем бакенде

Станислав
27.09.2018
16:23:43
бэк в случае неверного токена отдает 401

как мне сделать так, чтобы все остальные запросы ждали тот, который получит данные юзера тем самым проверив токен, а потом уже остальное, так как первый если получает ошибку, то тупо затирает и в след. запросах токена не будет

Станислав
27.09.2018
16:28:42
userActions.get() .catch(error => { cookie.remove(config.tokenCookieName); }) .then(response => { ReactDOM.render(...) }); ???

мне казалось это дикий костыль)

Valeriy
27.09.2018
16:29:02
ёпрст

ты даже не представляешь себе насколько :))))

а форма логина юзера то где?

Станислав
27.09.2018
16:29:40
если че, я это даже не пробовал юзать )))

Google
Станислав
27.09.2018
16:29:46
а то подумают совсем делетант ))

Valeriy
27.09.2018
16:31:24
сек
просто в твоем примере, если сервер тебя с токеном жестко обламал, то ты даже окошко логина не покажешь юзеру

Станислав
27.09.2018
16:31:32
там немного разбито все,  process(response) { cookie.save(config.tokenCookieName, response.body.token, { path: '/' }); modalActions.close(modalActions.types.LOGIN); } вот это выполняется после того, как успешно все закончилось

не совсем понял если честно

Valeriy
27.09.2018
16:32:06
ты се1йчас код бакенда показываешь что ли?

Станислав
27.09.2018
16:32:11
вся проблема при входе на сайт)

Admin
ERROR: S client not available

Станислав
27.09.2018
16:32:32
ты се1йчас код бакенда показываешь что ли?
? не) это выполняется в promise в then

а в catch он обрабатывает ошибки и записывает в стейт нужные данные, думаю, это не интересно

чета я сам запутался… и так, еще раз )) проблема: 1) юзер заходит на сайт 2) у юзера в куках/localStorage хранится истекший токен 3) выполняется асинхронный запрос на /api/profiles/me 4) выполняется асинхронный запрос на /api/items 5) к этому времени обрабатываю респонс от /api/profiles/me и стираю токен из хранилища 6) получаю 401 ошибку от /api/items нужно сделать так, чтобы в 4 шаге не отправлялся токен, а 5 шаг переместился на место 4.

Valeriy
27.09.2018
16:36:46
мне кажется, чтобы люди не писали такой код, надо запрещать программистам работать в дни когда магнитные бури сверепствуют :))

Valeriy
27.09.2018
16:37:57
ты должен первым делом определиться что может видеть неавторизованный юзер

если не должен видеть ничего кроме окна логина, то это все упрощает

Станислав
27.09.2018
16:38:59
/api/items может выполняться как с токеном, так и без, при этом получать разный контент, но с инвалидным токеном он отдает 401 анонимный юзер может видеть половину всго сайта)

Valeriy
27.09.2018
16:39:29
вот у меня в приложениях гость ничего не может поэтому до выяснения того кто он гость или реальный пацан я кручу сплэш скрин для него в этот момент веб разбирается с бакендом что там с токеном

Станислав
27.09.2018
16:40:20
а у меня есть список товаров, которые видит анонимный юзер и авторизованный...

Google
Станислав
27.09.2018
16:40:35
?

я все видел

не поможет )))

Станислав
27.09.2018
16:41:21
сначала обработай токен, потом в промисе вызывай ReactDom.render
а не это ли я скидывал немного ранее с подписью “дикий костыль”?)))

Mike
27.09.2018
16:41:21
поэтому к моменту запуска твоего приложения ты уже будешь знать про токен все

а не это ли я скидывал немного ранее с подписью “дикий костыль”?)))
а ты не слышал? веб состоит из костылей на 87.45%

Станислав
27.09.2018
16:42:24
Mike
27.09.2018
16:42:30
ну можешь по-другому

Станислав
27.09.2018
16:42:36
userActions.get() .catch(error => { cookie.remove(config.tokenCookieName); }) .then(response => { ReactDOM.render(...) }); ?

Valeriy
27.09.2018
16:42:58
дык значит это ок? )))
нет конечно это не окей

так делают студенты первокурсники

Mike
27.09.2018
16:43:24
можешь положить переменную "токен проверен" в свой любимый стейт менеджер, потом в аппе сделать запрос, который потом поменяет эту переменную, а пока не поменяли — прелоудер

Artyom
27.09.2018
16:43:49
так делают студенты первокурсники
Каждый из нас немного первокурсник ?

Станислав
27.09.2018
16:44:17
?

Mike
27.09.2018
16:44:19
это уже теплее :))
если ты говоришь теплее, значит, знаешь способ лучше

Страница 4895 из 5115