Как увеличить время жизни сессии/токена в мобильном приложении

Приветствую!

Используем мобильное приложение на базе от разработчиков Cart Power. Столкнулись с проблемой:
покупателей «выкидывает» из учетной записи каждые 7 дней, приходится авторизовываться заново. Покупатели жалуются на неудобство.

Разработчики приложения ответили, что это «ограничение ядра CS-Cart, токен живет менее 2 недель, и нужно править ядро».

Задача: Увеличить срок жизни авторизации до 1 месяца (30 дней). Онлайн-оплат и карт в приложении нет, поэтому вопрос безопасности стоит не так остро, как вопрос удобства.

Подскажите пожалуйста что где и как править?

Спасибо!

Чтото они прям напугали правкой ядра.

Откройте config.php

defined('COOKIE_ALIVE_TIME') or define('COOKIE_ALIVE_TIME', SECONDS_IN_DAY * 7); // one week

Вот тут поставьте вместо 7 - 30 например. Ну и понятно, что при обновлении надо снова вернуть будет.

1 лайк

Сделал, спасибо большое!

Проверю, на 8й день если не вернусь значит работает все :slightly_smiling_face:

1 лайк

Незачто. Это быстрый вариант. Если хотите, чтобы не пропадало без правок ядра тоже несложно делается, необходимые хуки есть.

Да, было бы круто сделать один раз и забыть.
Я так мучаюсь каждый раз после обновления cs-cart, лого когда гружу в svg и правлю коды.

Я буду вам благодарен если вы поможете пошагово.
Я сейчас авторизовался в приложении, подожду дней 8, надеюсь сработает.

Еще раз спасибо вам!

Попросите кого нибудь, кто вам с форума помогает.

Пошагово - в функции логина есть хуки, надо куку логина в хуке повторно поставить на 30 дней. Просто переопределить. И наверно в сохранении корзины было бы неплохо это сделать.

Спасибо!
Да, корзина и избранное, было бы не плохо.
Да, есть такой человек @alex_vp всегда выручает :upside_down_face:

1 лайк

Пообщался и с ИИ вот что говорит

Ваш советник на форуме прав лишь отчасти. Изменение константы COOKIE_ALIVE_TIME в config.php действительно влияет на сессии в браузере, но для мобильного приложения этого может быть недостаточно, так как API работает иначе.

Вот как решить задачу полностью:

  1. Изменение в config.php (то, что вам уже посоветовали)

Это «фундамент». Найдите строку и замените число:

php

defined('COOKIE_ALIVE_TIME') or define('COOKIE_ALIVE_TIME', SECONDS_IN_DAY * 30);

Используйте код с осторожностью.

Это заставит CS-Cart считать сессию валидной 30 дней на уровне системы.

  1. Время жизни API-токена (Важно для приложения)

Приложение от Cart Power обычно использует API. У CS-Cart есть параметр, который принудительно обнуляет токены.
Чтобы настройки применились к API, проверьте настройки в панели администратора:

  1. Перейдите в Настройки → Безопасность.

  2. Найдите пункт «Время жизни сессии администратора/пользователя».

  3. Убедитесь, что там стоит значение, соответствующее вашим 30 дням (в секундах).

  4. Проблема «правки ядра»

Разработчики Cart Power упомянули «правку ядра», потому что в старых версиях CS-Cart время жизни токена API могло быть жестко прописано в коде контроллеров авторизации.

Как сделать правильно (без потери при обновлении):
Вместо того чтобы просто менять config.php, лучше создать маленький модуль (аддон) или использовать local_conf.php.

  1. Создайте в корне сайта файл local_conf.php (если его нет).
  2. Пропишите ту же строку туда:

php

<?php
define('COOKIE_ALIVE_TIME', 2592000); // 30 дней в секундах

Используйте код с осторожностью.

3.Этот файл не затирается при обновлении движка.*

Вот это я делал, меня также выбило на 8 день

define(‘COOKIE_ALIVE_TIME’, 2592000); // 30 дней в секундах

пункты 1 и 2 также не нашел в админ панели )

1 лайк

что бы при обновлениях не сносились настроки, нужно все заносить в config.local.php.

define(‘SESSION_ALIVE_TIME’, SECONDS_IN_HOUR * 720); // 30 дней
define(‘SESSIONS_STORAGE_ALIVE_TIME’, SECONDS_IN_HOUR * 720); // 30 дней
define(‘COOKIE_ALIVE_TIME’, SECONDS_IN_HOUR * 720); // 30 дней

SESSIONS_STORAGE_ALIVE_TIME - корзины гостей

1 лайк

Но почему то после обновления до CS-Cart MV 4.20 , происходит разлогон с админки. Хотя раньше такого не было и сессия держалась указанное время в конфиге.

Что касается приложения, то такое чувство, что оно живет своей жизнью, вообще не понятно сколько сессия держится.

1 лайк