Здравствуйте. Есть авторизация через Steam, на Laravel. Логика такова:
1) Юзверь нажимает на сайте на кнопку "войти" и его перебрасывает на страничку стима
2) там он тоже нажимает "все ок, войти".
3) он опять попадает на мой сайт, на этот раз уже с данными от стима. если все ок - юзера авторизируют и перебрасывают на главную страничку.
Все это хорошо, но если бы не одно но: мне так-же нужно использовать angular и socket io, а так-же теперь хочу использовать JWT Auth. Выглядеть должно либо так:
- так-же, как и в первом случае, но при этом в самом конце, при попадании на сайт, юзер должен подождать некой авторизации на angular'е и на socket сервере
либо-же так:
нажимает на кнопку авторизации -> открывается окно со стимом, он нажимает "все ок, войти" -> ждет авторизации -> данные обновляются, и воуля, юзер авторизирован.
Только я не понимаю как это сделать. Даже близко. Суть JWT я понимаю отлично.
В чем собственно проблема?
После успешного редиректа, пишем юзеру токен (в куки или в localStorage) и редиректим на главную, а там уже angular подхватит токен и начнет работать.
На счет "localStorage" - как его запихнуть туда средствами laravel/php? И что на счет второго варианта, когда авторизация происходит без редиректов, прямо в окне?
Alex Wells:
"как его запихнуть туда средствами laravel/php"
никак, надо отдавать юзеру js который будет записывать токен в localStorage и редиректить.
Т.е просто выводим js:
Alex Wells: чтобы сделать авторизацию без рефреша, нужно:
- Сохранить токен
- Дать ангуляру знать что токен установлен (событием например)
- Делать все как обычно когда есть токен (получить данные юзера, поменять view и т.д)
D' Normalization: Это понятно, ты описал действия ПОСЛЕ всех действий. Это я уже понял. Что делать изначально то?) Создаем окно с OpenID ссылкой, там юзер авторизируется. А дальше? Как я понимаю, дальше стим отправляет запрос на сервер, тот в свою очередь проверяет инфу, делает все манипуляции. Итого у нас есть страница и отдельный запрос от стима на сервер с авторизацией.. и вот как теперь сказать ангуляру, что токен обновился?
Alex Wells: стим ничего никуда не должен отправлять. он редиректит юзера на back_url (который идет от social, если я правильно понял из вопроса) и уже тут мы и проделываем манипуляции с токеном которые я описал выше.
D' Normalization: Под "отправлять" я и имею виду редирект. Сам редирект произойдет в отдельном окошке, а "главное окно" останется как есть. В роуте, куда попадет стим после редиректа, произойдут все манипуляции. Дальше мы можем сгенерить токен. Теперь как ангуляру передать этот токен без обновления "главного окна" и флуда ajax'ом?
Alex Wells: я же написал, просто записываем токен в localStorage, и кидаем событие ангуляру. Можно например через window.opener javascript.ru/window.opener