0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 1534 Просмотров
*

Lesha_K

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

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

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Решение найдено. Причем - в недрах форума, в топике по Joomla 1.5.
Большое спасибо доброму человеку и форуму!

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

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

Lesha_K

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

Lesha_K

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

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Не знаю, почему трещит интернет, но я такой проблемы не наблюдал. А в тройке много чего поменяли, видимо код аутентификаии вынесли в плагин.
*

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Ну, достаточно набрать в 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, 19:12:28 от Lesha_K »
*

Lesha_K

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

Lesha_K

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

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
В Google Хром проверил, что вообще пишет сайт в куки, сравнив с записями других сайтов.
Пишет все то же самое, без "запомнить меня" запись одна, с птицей - две.
Спойлер
[свернуть]

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

Lesha_K

  • Захожу иногда
  • 135
  • 8 / 0
Кстати, эксперименты в файле 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

  • Захожу иногда
  • 135
  • 8 / 0
Извините, что много пишу, я бы мог биться сам и тихо, но мало ли - вдруг моя сеча со злым драконом сожравшем "запомнить меня", кому то окажет помощь в борьбе аналогичной.
На локалке. Если я выставляю параметр (допустим) 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

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

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

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Цитировать
Но два других моих сайта на Joomla 3, на этом же хостинге имеют так же по две записи кук. На 60 дней и "до закрытия". При том, "запомнить меня" - на них исправно работает.
О чем и речь - проблема где-то в другом, а не конкретно в коде Joomla. Не может быть так, что где-то код работает, а где-то - нет.
*

Lesha_K

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

Lesha_K

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

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

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

karabert

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

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 за участие в моей проблеме.





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

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

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Аналогичная проблема (разлогинирование при закрытии браузера; разлогирование после истечения времени 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, 21:24:49 от slepoy »
Помог? Поставь(те) плюс в репутацию.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пропало главное меню, и контент на главной (после обновления)

Автор GTHack

Ответов: 15
Просмотров: 517
Последний ответ 07.01.2024, 16:00:15
от ProtectYourSite
Я создал пользователя Author, но он не может зайти в редактирование

Автор Olegus79

Ответов: 7
Просмотров: 481
Последний ответ 19.10.2023, 20:48:52
от Vastriet
После загрузки не кликабельная картинка

Автор phvsfpgs

Ответов: 0
Просмотров: 280
Последний ответ 04.09.2023, 19:01:35
от phvsfpgs
Вернуть слайдер после работы с модулем html кода

Автор Jenik1245

Ответов: 0
Просмотров: 387
Последний ответ 30.05.2023, 14:15:58
от Jenik1245
Менеджер изображений не запоминает последнюю выбранную папку

Автор saxes

Ответов: 0
Просмотров: 361
Последний ответ 26.04.2023, 07:36:23
от saxes