Nikola24: Я о сессии вообще не говорил =) Пользуюсь jwt и реализация SPA приложений.
Данные можно подменить ДО выбора чего либо.
Так же их можно спокойно перехватить до отправки ajax запроса на сервер.
Фронт - это все что в чужих руках и вы это не можете полностью контролировать.
Между страниц, вы можете передавать данные как вам удобно.
Но как только заказ идет на бекенд (что бы в БД записать или прочитать), вы должны сделать все действия которые я описал.
Я не знаю как устроена у вас логика.
Но приведу простой пример.
У нас есть 2 товара:
1) Штаны - 500р.
2) Трусы - 200р.
Допустим мы отправили из в корзину.
Суммарно товар стоит 700р.
Если кто то поменял на фронте сумму на 100р., то нам все равно.
Ведь при оформлении заказа, все данные должны провериться на бекенде. Или при любом другом расчете.
Предположим мы нажали - оформить заказ.
На бек отправляется запрос:
арт. ххххх1; price: 300; и еще какие то параметры
арт. ххххх2; price: 10
currency: rub
count: 2
...
По этим артикулам, вы проверяете цену, наличие и все что требуется.
Вы видите на беке, что товар стоит стоит совершенно по другому, чем к нам пришла сумма.
Соответственно вы считаете реальные данные а не фиктивные, предупреждаете об этом пользователя.
nepster-web: Мое мнение, вы слишком заморачиваетесь и ключи к jwt не нужены.
Есть базовый secret-key и его вполне хватает на все операции.
Токен формируется на основе набора данных и шифрованной соли (что бы токен был уникальный)
При запросе данные будут видны всегда. По этому желательно использовать https
Далее идет проверка на беке.
Если все ок, то вам возвращается массив с ролями и токеном.
DarthJS: Если идет разделение на фронт/бек, то angular.
Обратно возвращается токен.
Естественно в проекте не должно быть php сессий.
Все работы происходят посредством jwt authentication
Евгений: Да, для каждой сущности выбираете все что вам потребуется и отображаете.
Если нагрузка будет возрастать (1000+ запросов в минуту), то тут стоит продумать архитектуру.
Но я этим не буду заниматься, мне своего хватает.
Я кстати использую mongodb. Но и система немного друга.
На любой чих в проекте создается лог и из него ясно, кто что сделал.
Уведомления сидят в комнатах на websockets. Сервер для уведомления, мессенджера и т.д., написан на Go.
Весь остальной бекенд в проекте крутится на php 7.1 / mysql, SF3+DDD+Bus+CQRS
Фронтенд, это совершенно отдельный сайт, реализованный на js/ts (angular)? который общается с беком по api.
Посмотрите что возвращает $select
Будет понятно, почему не проходит дальше.