2015-08-26 3 views
2

Я создаю приложение java + angularjs. Я выполнил тайм-аут сеанса на стороне клиента, который отправляет запрос серверу на истечение сеансового токена, если у пользователя нет активности в течение 30 минут.Должен ли быть реализован тайм-аут сервера?

Если тайм-аут также присутствует отдельно на стороне сервера, т. Е. Если соединение с сервером не было закрыто в течение 5 часов или одного дня, автоматически истекает токен сеанса на стороне сервера и регистрирует пользователя, отправив 401 ?

Еще один случай, который приходит на ум, заключается в том, что если я использую API отдельно с каким-либо другим приложением, должен ли мой API никогда не истекать тайм-аут? Или он должен иметь продолжительность сеанса, так как я управляю токеном сеанса на стороне сервера.

+1

Серверная сторона - это тот, кто отвечает за тайм-ауты сеанса. В противном случае вредоносный (или поврежденный) клиент может вызвать проблемы на сервере (например, создать 100000 сеансов на сервере, а не отключать их). – Kayaman

+0

Определенно. Тайм-аут на стороне сервера должен быть более агрессивным, чем таймаут на стороне клиента. Сервер - это один потребляющий несколько ресурсов за сеанс. Клиент имеет только один сеанс. – EJP

ответ

0

ИМХО, сохраняя токены сеанса на вашем сервере с TTL (время жизни, в основном ваш токен будет удален из вашего хранилища данных, если не будет активности в течение определенного периода времени) было бы лучшим подходом. У многих хранилищ данных есть механизмы для реализации этого, и он автоматически удаляет токены сеанса, когда истекает TTL; Я бы предложил Redis для этого случая. Требуется хранение безопасности сеанса на стороне сервера.

Если вы предоставляете API для различных приложений, имеет смысл использовать один и тот же механизм. Вы можете войти в другое приложение, если пользователь выполнил вход в систему и уже разрешил другое приложение через вашу систему.

+0

Redis имеет TTL, но не имеет скользящего истечения, поэтому вам придется реализовать это самостоятельно на стороне сервера или на Redis, используя сценарий lua –

 Смежные вопросы

  • Нет связанных вопросов^_^