Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: Zababaha от 31 Октября 2020, 08:08:53



Название: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Zababaha от 31 Октября 2020, 08:08:53
Добрый день.
Возможно-ли изменить чувствительность регистра поля "логин" при входе в личный кабинет?

Столкнулся со следующей проблемой.
Абонент с условным логином LOGIN111 при настройке роутера (PPPoE) ввёл логин с ошибкой LOgIN111.
Авторизация прошла, интернет поехал, а вот в личный кабинет он попасть не может, т.к. в самой базе данных его логин тоже изменился на LOgIN111 (а так должно быть?).


Название: Re: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Cell от 31 Октября 2020, 14:11:37
Дичь какая-то. Во-первых авторизация не должна проходить это раз, а во-вторых ничего не меняет сама радиус-авторизация.
Поправьте меня, если я не прав.


Название: Re: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Zababaha от 31 Октября 2020, 19:10:37
Дичь какая-то. Во-первых авторизация не должна проходить это раз, а во-вторых ничего не меняет сама радиус-авторизация.
Поправьте меня, если я не прав.

Забабахал видео, на котором это наглядно видно - https: //fex.net/s/bndkbtz

Кстати, авторизация и в ЛК, и PPPoE без соблюдения регистра в логине присутствует и в 50.32 версии, причем очень давно.
Но лично мы этим не заморачивались ранее, т.к. вход в личный кабинет тоже не требовал соблюдения регистра в логине.
Условно абонент с логином K1000 мог и в настройках авторизации PPPoE, и при входе в ЛК указывать и "K1000" и "k1000". Можно сказать, что это было даже не багой, а условно фичей.

А вот в Н+ вход в личный кабинет возможен строго соблюдая регистр, при этом при PPPoE авторизации по прежнему эта строгость не важна.
И как вы заметите в видео, неточность при соблюдении регистра при авторизации почему-то ещё и меняет логин в базе данных, что доставляет хлопот при входе в ЛК.

Имхо, если сделать нетребовательность к регистру в логине при входе в ЛК в Н+, то данный "прикол" особо никому и мешать не будет.

Н+ стоит из коробки по мануалам на сайте, без всяких допов и отклонений. База мигрирована с Н50.32




Название: Re: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Efendy от 31 Октября 2020, 23:26:41
Покажи результат выполнения в mysql:
Код:
SHOW CREATE PROCEDURE radcheck\G
Код:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'nodeny';



Название: Re: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Zababaha от 01 Ноября 2020, 07:59:38
Покажи результат выполнения в mysql:
Код:
SHOW CREATE PROCEDURE radcheck\G

           Procedure: radcheck
            sql_mode: NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `radcheck`(IN login VARCHAR(64), IN only_one_session INT)
BEGIN
    SELECT id, name, 'Cleartext-Password' AS Attribute, AES_DECRYPT(passwd, 'password888') AS Value,':='
        FROM users u WHERE name=login AND
            IF(only_one_session < 1, true,
                NOT EXISTS (SELECT 1 FROM v_ips WHERE uid=u.id AND auth=1 AND last>(UNIX_TIMESTAMP() - 300) LIMIT 1)
            );
END
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci


Код:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'nodeny';

+----------------------------+------------------------+
| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8                       | utf8_general_ci        |
+----------------------------+------------------------+
1 row in set (0.00 sec)


Название: Re: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Efendy от 02 Ноября 2020, 18:35:03
Сделай так:

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64), IN only_one_session INT)
BEGIN
    SELECT id, name, 'Cleartext-Password' AS Attribute, AES_DECRYPT(passwd, 'password888') AS Value,':='
        FROM users u WHERE name=login COLLATE utf8_bin AND
            IF(only_one_session < 1, true,
                NOT EXISTS (SELECT 1 FROM v_ips WHERE uid=u.id AND auth=1 AND last>(UNIX_TIMESTAMP() - 300) LIMIT 1)
            );
END$$
DELIMITER ;


Название: Re: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет
Отправлено: Zababaha от 03 Ноября 2020, 06:00:02
Сделай так:

Код:
DROP PROCEDURE IF EXISTS `radcheck`;
DELIMITER $$
CREATE PROCEDURE `radcheck` (IN login VARCHAR(64), IN only_one_session INT)
BEGIN
    SELECT id, name, 'Cleartext-Password' AS Attribute, AES_DECRYPT(passwd, 'password888') AS Value,':='
        FROM users u WHERE name=login COLLATE utf8_bin AND
            IF(only_one_session < 1, true,
                NOT EXISTS (SELECT 1 FROM v_ips WHERE uid=u.id AND auth=1 AND last>(UNIX_TIMESTAMP() - 300) LIMIT 1)
            );
END$$
DELIMITER ;

Да, помогло.
Теперь строгая авторизация по логину и в PPPoE и в ЛК ровно так, как логин записан в БД.
Спасибо)