LINUX.ORG.RU

Поделитесь опытом управления сессиями

 , , ,


0

3

Сабж. Как правильней и оптимальней это реализовывать? Вот есть у меня сервер-сайд и фронт-сайд. На сервере все RequestHandler-ы унаследованы от одного класса, где в «при начале каждого запроса» (prepare в Tornado) я проверяю куку на содержание session_id, если ее нет, то сохраняю в БД. Если пользователь логинится, то я в эту строку таблицы БД еще и ссыль на пользователя добавляю.

На фронте у меня меню приложения, где в зависимости от того, залогинен ли пользователь, выводятся либо «Зарегиться/Войти», либо уже меню пользователя. Соответственно, при каждом рендере меню дергается url на сервере, который отдает либо 200, либо 403, в зависимости от того, залоген ли пользователь, и не просрочена ли сессия. Плюс к тому, каждый реквест к серверу сопровождается анализом кода ответа, и если 403, то редиректит на страницу логина (кроме общедоступных url).

Вроде все логично, но при таком подходе, я где-то, наверное, переборщил с проверками сессии, и поимел дублирование строк в БД.

Т.е. когда я искусственно делаю сессию просроченной, а потом пытаюсь вызвать приватный раздел сайта (и ловлю редирект), то в БД мне создает несколько новых строк в таблице сессий, но первая из них привязывается к пользователькой, она потом становится основной, когда я логинюсь.

Немного сумбурно написал, не ругайте.

PS. Пишу на Tornado. Не знаком с Flask, не знаю, как там с сессиями, но, думаю, подписанным на него будет интересен тред.

★★★★★

мне вот тоже интересно было одно время и хотел вот это прикрутить к фронту: https://github.com/Nightsuki/tornado-session

или на куках сделать с асинхронной коррекцией или полностью асинхронным фронт сделать и хранить временные данные в dict, выбрал куки с коррекцией т.к и время поджимало и смысла нет в сессиях на фронте.

Frost ★★★ ()

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

pawnhearts ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.