Форумы / National / Russian / Тех. поддержка / Слет авторизации

12>>>

Boss
#1 13.03.2009 15:42
В чем причина слета авторизации? Вроде куки создаются, дата там нормальная устанавливается... Почему сайт выпинывает пользователя через некоторое время?

ps: В настройках $cfg['ipcheck'] = FALSE; значит эта причина сразу отпадает.
jcrush
#2 13.03.2009 16:23
та же фигня, уже не один раз писал об этом
SEO блог: http://blog.stfw.ru/
Boss
#3 14.03.2009 17:58
Похоже авторизация держится только за счет сессий. Куки не воспринимаются в принципе.
esclkm
#4 14.03.2009 19:03
1. куки в наспройках подписаны?
2. версия?
3. на скольких компах используется 1 аккаунт?
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
dervan
#5 14.03.2009 20:41
Это - ошибка при вычислении параметра $expire при вызове функцищи sed_setcookie(). Параметр имеет тип int, а вычисляется сейчас так:
time()+$cfg['cookielifetime']*86400
При этом значение $cfg['cookielifetime'] по умолчанию '5184000', т.е. происходит превышение максимально возможной величины для int, и в результате получается cookie с Expires = Session.

Исправление ошибки.

Найти в system/functions.admin.php строку:
	$result[] = array ('main', '10', 'cookielifetime', 2, '5184000', array (1800,3600,7200,14400,28800,43200,86400,172800, 259200,604800,1296000,2592000,5184000));
и поправить:
	$result[] = array ('main', '10', 'cookielifetime', 2, '60', array(1,2,3,7,15,30,60));

Найти в system/lang/en/admin.lang.php строку:
$L['cfg_cookielifetime'] = array('Maximum cookie lifetime', 'In seconds');
и поправить:
$L['cfg_cookielifetime'] = array('Maximum cookie lifetime', 'In days');
Аналогичные исправления сделать в других языковых файлах.

Зайти в Administration panel / Configuration / Main setup и там поправить Maximum cookie lifetime :, например на 60.[/][/]
Trustmaster
#6 15.03.2009 02:25
Теперь понятно, почему иногда "remember me" вообще не может задать cookie. Может проще убрать множитель 86400 и оставить время в секундах? Иначе надо еще добавить SQL-патч и менять все языковые файлы.
May the Source be with you!
Отредактировано: Trustmaster (15.03.2009 02:31, 15 лет назад)
dervan
#7 15.03.2009 02:54
А где обсуждали вопрос об изменении единицы измерения - какие были причины для этого?

В секундах есть свои преимущества - можно как и раньше ставить интервалы меньше, чем сутки. И что lang-файлы при откате назад на секунды не придётся переделывать - тоже большой плюс.
Trustmaster
#8 15.03.2009 02:58
Нигде не обсуждали, это чистой воды баг, который получился в результате путаницы переменной в конфиге и параметра в форме авторизации.
May the Source be with you!
dervan
#9 15.03.2009 03:16
Если никто не хотел менять единицу измерения - может, и правда проще поменять способ вычисления параметра $expire.

Тем, кто сейчас использует Cotonti 0.0.3, можно в качестве временного решения до выхода новой версии советовать ставить в админке Maximum cookie lifetime в значение 1800 (хотя может и побольше будет работать, надо проверять). А после установки следующей версии им придётся опять сходить в админку и поменять это значение.
Boss
#10 16.03.2009 22:33
Спасибо!

зыЖ Админы, вы бы еще на этом сайте подкрутили настройки.
dervan
#11 17.03.2009 06:13
Пожалуйста. :)

Только исправлять код надо иначе - выложенный здесь вариант сделан из неверного предположения, что была изменена единица измерения.

Правильный вариант исправления кода здесь: r636.
Boss
#12 17.03.2009 23:43
Короче, все равно, как оказалось вылетает авторизация. Я уж и те три файла пропатчил, как предлагается по ссылке в предыдущем посте.
dervan
#13 18.03.2009 09:51
До того, как я искал эту ошибку, у меня стоял апдейт с Cotonti 0.0.2 до 0.0.3, там она не наблюдалась.

Поставил Cotonti 0.0.3 с нуля, ошибка начала стабильно повторяться. Сделал исправления, как рассказано выше, больше эта ошибка не появляется.

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

И ещё: если ты сделал патч r636, не забудь в админке вернуть Maximum cookie lifetime в значение 5184000. И на всякий случай почисти cookie в браузере.

P.S.
Если ты заходишь по HTTPS, то cookie авторизации слетают после сеанса - так и должно быть, это специально сделано.
Trustmaster
#14 18.03.2009 12:31
Boss, у тебя динамический IP, который постоянно меняется. Поэтому неудивительно, что слетает авторизация на этом сайте. Вот если ipcheck=FALSE, то это уже другое дело. Но чтобы выяснить, в чём оно состоит, надо очень чётко фиксировать последовательность действий, которая приводит к слёту авторизации. Потому что если проблема с сабмитом форм - это одно, а если просто при сёрфинге - это совсем другое. И частота вылетов тоже очень важна.
May the Source be with you!
Boss
#15 18.03.2009 13:20
Проверял все. Начал сегодня разбираться - кук COTONTI не создается, только PHPSESSID. :-) До этого тестировал все нормально было. Вроде по части авторизации ничего не правил. Ну да ладно. У меня причина была в отправляемой форме.

Вот этот фикс снимите, он ложный.
http://trac.cotonti.com/ticket/248

Без него все нормально.

12>>>