instantsoft / icms2

Self-hosted Site Management System
https://instantcms.ru
GNU General Public License v2.0
294 stars 120 forks source link

Удаление токена авторизации #1231

Closed zau4man closed 3 years ago

zau4man commented 4 years ago

В icms при авторизации пользователя создается токен в таблице токенов + кука в браузере пользователя. И когда пользователь заходит на сайт, система "узнает" его по этой куке и авторизует, вот тут https://github.com/instantsoft/icms2/blob/e0237a415cc7e6bd84f6830cb951f51943d55cea/system/core/user.php#L246

Однако в этой же строчке идет проверка, не истек ли токен. Токен считается истекшим, если создан 100 дней назад.

Предлагаю проверку токена делать не по дате создания, а по дате последнего обновления. Тем более эта дата уже хранится в таблице токенов в поле date_log. И обновляется каждый раз при авторизации по куке.

В противном случае раз в 100 дней пользователя с сайта разлогинивает (по коду строчкой ниже) и он вынужден заново вводить е-майл и пароль.

Если это сделано для безопасности, то 100 дней - достаточный срок, чтобы что-то произошло, пока кука действительна. Можно вынести поведение переавторизации по куке в опции. Можно просто делать проверку токена по дате последнего обновления, что, на мой взгляд, логично. Постоянные посетители сайта не будут разлогиниваться без своей на то воли.

geminisf commented 4 years ago

Поддерживаю