Форум русской поддержки Joomla!® CMS
06.12.2016, 20:06:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Не запоминает пользователя после миграции до 3.4

 (Прочитано 508 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« : 17.10.2015, 16:00:19 »

Искал и просматривал темы форума, копался в сети. Описаны схожие проблемы, но решения либо нет, либо они идут в сторону дополнительно  установленных расширений.
Суть такова.
Мигрировал с 2.5 до 3.4. После необходимых правок и корректировок сайт заработал, все в норме.
Но на хосте, и на локалке, один и тот же баг. После закрытия браузера пользователю вновь надо вводить логин-пароль.
Плагины "запомнить меня", аутентификация Cookie включены. На всякий случай - заменены с дистрибутива 3.4.
Регистрация работает без сбоев.
Вход на сайт - через стандартно опубликованный пункт меню, или штатный модуль кунена-логин. Отключал поочередно.
В таблице БД _sessions исправно появляются строки о сессиях пользователей.
В логах ошибок нет.
Проверял в четырех браузерах, у которых вычищен кэш. Да и у всех пользователей - такая же беда.
Никаких дополнительных расширений нет. Joomla 3.4, Kunena 4.0.6, К2 2.6.
На локалке отключал все сторонние плагины и расширения, чистил кэш - не помогло.
Параллельно на локалке был сделан "чистый" сайт на 3.4, с такими же компонентами (кунена, К2), где "запомнить меня" работало как положено.
От безысходности, тупо заменил на подопытном сайте таблицы связанные с сессиями и пользователями с чистого.
Не помогло.

Буду благодарен за помощь - в какую сторону копать.
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #1 : 17.10.2015, 18:03:08 »

Решение найдено. Причем - в недрах форума, в топике по Joomla 1.5.
Большое спасибо доброму человеку и форуму!

http://joomlaforum.ru/index.php/topic,269768.0.html

Поправил файл, указанный в ссылке.  "Запомнить меня" - заработало. При закрытии любого браузера и повторном открытии - залогиненный пользователь сохраняется.
Решение проверено на хостинге и локалке, для Joomla 3.4.4
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #2 : 24.10.2015, 20:26:50 »

Радость была преждевременной. Выяснилось, что решилась только одна часть проблемы. После закрытия браузера, и повторного открытия, пользователь остается залогиненным.
Но это действует лишь на время, установленное в админке. 30 минут - куки действуют ровно столько. Выставляешь минуту - через полторы после закрытия-открытия браузера, ты вновь разлогинен.
Подобным вопросом трещит англоязычный (и русский) интернет по Joomla 3.х, и все связано именно с миграцией с 2.5. Единственно разумным решением является "обновляйтесь". Но...
Вчера, плюнув на все, "накатил" установочный пакет Joomla 3.4.5 на сайт.
Просмотрел ошибки - касательно установок всего того, что связано с куками, пользователями, "запомнить" - нет.
Естественно, исправления мои похерились.
И пришел к тому, с чего и начал. При закрытии-открытие браузера, слетает авторизация.
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #3 : 24.10.2015, 23:58:26 »

Это офигеть можно! Старый сайт (на Joomla 2.5) еще висит у меня на хостинге, под другим доменным именем. Оставил на всякий, чтобы перенести вдруг чего, что будет нужно. Его копия обновлена до 3.4.4 и заняла место по старому доменному имени.
Так вот. Сейчас просмотрел его админку. Плагина Autentification Cookie там вообще нет! Как вещества материи. Он не просто отключен, его нет даже в списке расширений.
При этом, сайт исправно запоминал пользователей, хоть месяц на него не заходи.
На обновленной версии этого сайта, когда начались проблемы с запоминанием, я установил этот плагин. Его, естественно, то же не было. (Интересно, почему не пакет обновления, а пакет установки 3.4.4 не установил плагин?).
Это что выходит - что он совершенно был не нужен в действе с куками на Joomla 2.5?
Записан
b2z
Support Team
*****

Репутация: +710/-0
Online Online

Пол: Мужской
Сообщений: 7533


Разраблю понемногу


« Ответ #4 : 25.10.2015, 09:55:03 »

Не знаю, почему трещит интернет, но я такой проблемы не наблюдал. А в тройке много чего поменяли, видимо код аутентификаии вынесли в плагин.
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #5 : 25.10.2015, 13:18:16 »

Ну, достаточно набрать в Google "remember me don't Joomla 3 " и полюбоваться на десятки страниц аналогичных проблем.
Причем, половина решений - "увеличьте время сессии". Уже посмеиваться начал, видя такое.
Да, в "тройке" много чего поменялось.
К плагину cookie добавилась таблица *_users_key. Смотрел куки браузера. То, что там прописано, совпадает с записями в строках таблиц *_users_key,  *_sessions.
И - интересный момент. В папке temp за пределами папки www, были файлы с записями сессий, я их просмотрел. В них сильно не разбирался, но отметил, что там есть строчки записи и обращения к таблице *_users_key. Какое то странное дублирование. Плагин cookie имеет аналогичные команды записи, чтения, удаления строк из этой таблицы. Удалил все эти файлы.
Обновил страничку - оказался разлогиненным. Вновь авторизовался, получив перед этим сообщение "вы ввели данные из устаревшей сессии".
Посмотрел папку temp. Она так и осталась пустой, ничего там не добавилось.
Эффект от этой манипуляции был. Без всякой правки файлов, закрытие-открытие браузера не вызывает сброс авторизации. Но - опять, только на время действия сессии, установленное в админке.
Причем, в параметрах PHP прописано: Session Save Path  /web/мой сайт.ru/temp
« Последнее редактирование: 25.10.2015, 20:12:28 от Lesha_K » Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #6 : 25.10.2015, 13:25:50 »

Цитировать
видимо код аутентификаии вынесли в плагин
Да, и спасибо вам за эту фразу. Натолкнула на мысль - а не осталось ли у меня каких не удаленных при установке 3.4 "хвостов" от 2.5, которые конфликтуют между собой, и создают проблему запоминания.
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #7 : 25.10.2015, 14:38:55 »

Проверил папки temp других своих сайтов, в том числе "старого", на 2.5.
Папки пусты, в них нет записей типа: sess_2lco1ua9jb26sfcc6fgoflb4t7h8ln4s
Если я восстанавливаю эти файлы в папке сайта, проблему с запоминанием которого я рассматриваю, появляется прежняя картина. При закрытии-открытии браузера, пользователь влет разлогинивается.
Вывод: скорее всего, записи в папке temp - тяжелое наследие от локального сервера или предыдущих экспериментов. К примеру, после обновления до 3.4, таблицы *_users_key у меня вообще не было.
Не пойму, зачем же тогда в рнр прописан Session Save Path на эту папку? Никакие манипуляции с сессиями, авторизациями, истечением времени сессии пользователя, остающегося на сайте (работающего, или просто "висящего") - прибавлений в папке не создают.
« Последнее редактирование: 25.10.2015, 14:41:57 от Lesha_K » Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #8 : 25.10.2015, 17:53:25 »

В Google Хром проверил, что вообще пишет сайт в куки, сравнив с записями других сайтов.
Пишет все то же самое, без "запомнить меня" запись одна, с птицей - две.
Показать текстовый блок

Почему система выбирает не запись с двухмесячным сроком действия, а "При завершении сеанса браузера"?
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #9 : 25.10.2015, 19:33:20 »

Кстати, эксперименты в файле sessions.php:

Цитировать
session_set_cookie_params($cookie['lifetime'], $cookie['path'], $cookie['domain'], $cookie['secure'], true);
И подставлением вместо $cookie['lifetime'],  ничего не дают, если смотреть на запись куков в браузере.
Если просто вырезать этот параметр, в информации браузера получаем время жизни кук - "до закрытия браузера".
А если ставить хоть 1 хоть 500 0000,  все равно, время жизни кук в браузере остается равным 60 дням - дефолтной установке параметра в плагине autentification cookies.

В файле sessions прописано, что восстановление сессии брать только из кук:
Цитировать
// Only allow the session ID to come from cookies and nothing else.
      ini_set('session.use_only_cookies', '1');

Раз записей в браузере после авторизации становится две (первая - "до закрытия", вторая с временем в 60 дней появляется после авторизации),
то я думаю, что действительно, вся проблема в том, что берется "не та" запись из куки браузера.
Вот отсюда и вопрос - где это прописано, и как заставить систему брать то, что следует?
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #10 : 25.10.2015, 20:05:21 »

Извините, что много пишу, я бы мог биться сам и тихо, но мало ли - вдруг моя сеча со злым драконом сожравшем "запомнить меня", кому то окажет помощь в борьбе аналогичной.
На локалке. Если я выставляю параметр (допустим) 5 дней в конфигурации плагина аутентификации куки, то:
Первое открытие страницы сайта без авторизации, создает запись в браузере:

Имя:   726243a7924b9419753932b8a4f5bb79
Содержание:   osa1jqkgqdfrqignfuoacje563
Домен:   localhost
Путь:   /
Отправка:   при любом типе подключения
Доступен для скрипта:   Нет (HttpOnly)
Создано:   воскресенье, 25 октября 2015 г., 17:51:13
Срок действия:   воскресенье, 1 ноября 2015 г., 17:51:14

Теперь авторизуюсь, и в куках браузера появляется вторая запись:

Имя:   145aeb70a34f5f46df420dd22732cc30
Содержание:   MZJP4SV8.UzNPeQZ03vcdYJElL7di
Домен:   localhost
Путь:   /
Отправка:   при любом типе подключения
Доступен для скрипта:   Да
Создано:   воскресенье, 25 октября 2015 г., 17:52:10
Срок действия:   пятница, 30 октября 2015 г., 17:52:12

Все те же пять дней, с небольшой вариацией (на установленное время сессии, я думаю). Но - опачки!
В обоих записях нет в сроке действия "до закрытия браузера", как это есть в одной из записей сайта на хостинге.
Соответственно, на локалке все работает. (Да это и отмечали те, кто бился и не поборол проблему).

Что выходит? Что запись кук в браузере "до закрытия браузера" - не соответствует реалиям?  Но два других моих сайта на Joomla 3, на этом же хостинге имеют так же по две записи кук. На 60 дней и "до закрытия". При том, "запомнить меня" - на них исправно работает.
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #11 : 25.10.2015, 22:41:15 »

Попутно копаясь, нашел чудный плагин - Forever Sessions :
http://extensions.joomla.org/extensions/extension/core-enhancements/performance/forever-sessions
Выбираем нужную группу (группы пользователей), включаем - и ура. Хоть минуту в админке выставляй, пока ты на сайте (или в админке) - ты всегда на сессии. Но это - пока на сайте...
Плагин не решает проблемы закрытия браузера.

Добился что во второй записи в куках браузера вместо "до закрытия браузера" появилось 60 дней. Но... Один фиг. Зарываешь - и ты разлогинген. Соответственно, не важно теперь к какой из записей обращается система, чтобы восстановить сессию (авторизацию) пользователя.
Очевидно, баг где то в обмене информацией между сайтом и браузерами...
Записан
b2z
Support Team
*****

Репутация: +710/-0
Online Online

Пол: Мужской
Сообщений: 7533


Разраблю понемногу


« Ответ #12 : 25.10.2015, 23:52:55 »

Цитировать
Но два других моих сайта на Joomla 3, на этом же хостинге имеют так же по две записи кук. На 60 дней и "до закрытия". При том, "запомнить меня" - на них исправно работает.
О чем и речь - проблема где-то в другом, а не конкретно в коде Joomla. Не может быть так, что где-то код работает, а где-то - нет.
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #13 : 26.10.2015, 00:40:44 »

Спасибо.
Единственная разница между сайтом с багом и двумя другими (старый, на 2.5 я уже в расчет не принимаю), это то, что два работающих изначально созданы на Joomla 3.4. А вот тот, с которым я бьюсь - это обновление с 2.5 до 3.4.
Посему и думаю, что ошибка плавает где то в коде.
На данный момент зафиксированный результат битв таков: "Запомнить меня"  (ну и куки иже с ним), живут (читай - воспринимаются системой) ровно столько, сколько установлена сессия в админке.
Ставлю 60 минут, час - хоть с треском хлопай дверями всех браузеров. Минуту - ну и т.д....
Записан
Lesha_K
Осваиваюсь на форуме
***

Репутация: +8/-0
Offline Offline

Сообщений: 134


« Ответ #14 : 26.10.2015, 13:26:55 »

Похоже, проблема решена. Первые тестирования дали положительный результат.
Все же, дело было в коде. Итак:

Moving methods to Cookie Authentication, автор: Bakual

Теория, пояснения, комментарии: http://issues.joomla.org/tracker/joomla-cms/2749
Представления модификаций, файлы: https://github.com/Bakual/joomla-cms/commit/9fb113094112f1c5d30413bff50a0b7f6b23e6ba
 
Заменены файлы на исправленные по путям:
plugins/authentication/cookie/cookie.php
plugins/system/remember/remember.php
plugins/user/joomla/joomla.php

После удаления своих собственных правок, файлы заменены. Очищен кэш. Время сессии выставлено в 1 минуту.
После авторизации в куках браузера появились две правильные, ожидаемые записи. Закрытие-открытие браузера через промежуток времени более 1 минуты, сброса авторизации не вызывает. Проверка регистрации, входа-выхода, опции "запомнить меня" ошибок не выявила.
Тестирование исправлений продолжу, если будут баги - отпишусь.
Спасибо b2z за участие в моей проблеме.


Записан
b2z
Support Team
*****

Репутация: +710/-0
Online Online

Пол: Мужской
Сообщений: 7533


Разраблю понемногу


« Ответ #15 : 26.10.2015, 13:31:47 »

Спасибо, что отписались. Другим поможет.
Записан
karabert
Давно я тут
****

Репутация: +29/-1
Offline Offline

Пол: Мужской
Сообщений: 242



« Ответ #16 : 04.12.2015, 00:34:44 »

Похоже, проблема решена. Первые тестирования дали положительный результат.
Все же, дело было в коде. Итак:

Moving methods to Cookie Authentication, автор: Bakual

Теория, пояснения, комментарии: http://issues.joomla.org/tracker/joomla-cms/2749
Представления модификаций, файлы: https://github.com/Bakual/joomla-cms/commit/9fb113094112f1c5d30413bff50a0b7f6b23e6ba
 
Заменены файлы на исправленные по путям:
plugins/authentication/cookie/cookie.php
plugins/system/remember/remember.php
plugins/user/joomla/joomla.php

После удаления своих собственных правок, файлы заменены. Очищен кэш. Время сессии выставлено в 1 минуту.
После авторизации в куках браузера появились две правильные, ожидаемые записи. Закрытие-открытие браузера через промежуток времени более 1 минуты, сброса авторизации не вызывает. Проверка регистрации, входа-выхода, опции "запомнить меня" ошибок не выявила.
Тестирование исправлений продолжу, если будут баги - отпишусь.
Спасибо b2z за участие в моей проблеме.





Такая же проблема, обновление файлов помогло.

Только теперь невозможно выйти.
« Последнее редактирование: 04.12.2015, 00:38:37 от karabert » Записан
slepoy
Завсегдатай
*****

Репутация: +21/-0
Offline Offline

Сообщений: 703


Тотальная шизофазия


« Ответ #17 : 16.07.2016, 22:18:50 »

Аналогичная проблема (разлогинирование при закрытии браузера; разлогирование после истечения времени Session Lifetime при Session Handler) преследует меня после миграции Joomla 1.5 > 2.5.

После перехода на Joomla 3.х осталась только проблема с разлогированием после истечения времени  Session Lifetime.

Цитировать
Теория, пояснения, комментарии: http://issues.joomla.org/tracker/joomla-cms/2749
Представления модификаций, файлы: https://github.com/Bakual/joomla-cms/commit/9fb113094112f1c5d30413bff50a0b7f6b23e6ba
Наверное, на сегодняшний день не очень правильно слепо заменять оригинальные файлы на модификации 2013-ого года, а вносить правки вручную (237 additions and 329 deletions) довольно затруднительно.


Также мне не совсем понятна логика этого бага. Если все замечательно работает на чистой Joomla 3, но не работает на обновленной 2.5>3, которая включает в себя все оригинальные файлы от J3 (даже после того, как перезалить файлы из оригинального дистрибьютива), то проблема ведь должна быть в БД, а не в файлах?

Бегло сравнил структуру таблицы _user_keys (ее столбцы), но отличий от БД чистой J3 не нашел. Что еще можно проверить?

Спасибо.
« Последнее редактирование: 16.07.2016, 22:24:49 от slepoy » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet