Задать вопрос
@Wild_klas
Web developer

Как правильно реализовать работу с пользователем в изоморфном js приложении?

Я делаю приложение с использованием react, в котором у меня первый рендеринг страницы происходит на сервере, а полседующие рендеры происходят на клиенте. Используются одни и те же компоненты как для клиента так и для сервера. Вот здесь описан такой подход:
https://medium.com/@benlu/ssr-with-create-react-ap...
https://github.com/ayroblu/ssr-cra-v2.1

Как в таком случае нужно реализововать авторизацию и работу с пользователем ? Нужно делать проверку что Вася это Вася как на стороне сервера так и на стороне клиента ? Или нужно делать как то иначе ?

У меня есть такая вынести работу с пользователем чисто на клиентскую сторону, но я не уверен что этот подход является правильным: после авторизации выдавать пользователю JWT, и при каждом запросе на страницы которые может просматривать только авторизированный пользователь делать проверки на стороне клиента, а если эту страницу нужно отрендерить на сервере то отдавать ее как не авторизованному пользователю, а дальше если пользователь авторизован то перерисовывать страницу на клиенте (страницы которые может видеть только авторизированный пользователь для SEO не важны).
  • Вопрос задан
  • 712 просмотров
Подписаться 2 Средний 2 комментария
Решения вопроса 1
mr_T
@mr_T
Web-разработчик
Всё, что связано с авторизацией, можно оставить только на клиенте. На сервере в таком случае всё должно рендериться так, как будто пользователь анонимус. Так делать совершенно нормально, если нет цели давать готовую разметку авторизованным пользователям с сервера.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
Рендер отдельно, API отдельно.
SSR - это просто proxy между клиентом и API.
Делаем обертку над http клиентом (если это fetch, или создаем новый если axios), и на клиенте используем как есть, а на сервере передаем туда заголовки (req.headers) от клиента. JWT придется сохранять в куки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы