Биллинговая система Nodeny
23 Апреля 2024, 09:39:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Проблема чувствительности регистра поля "Логин" при входе в личный кабинет  (Прочитано 2583 раз)
Zababaha
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 8


Просмотр профиля
« : 31 Октября 2020, 08:08:53 »

Добрый день.
Возможно-ли изменить чувствительность регистра поля "логин" при входе в личный кабинет?

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

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #1 : 31 Октября 2020, 14:11:37 »

Дичь какая-то. Во-первых авторизация не должна проходить это раз, а во-вторых ничего не меняет сама радиус-авторизация.
Поправьте меня, если я не прав.
Записан
Zababaha
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 8


Просмотр профиля
« Ответ #2 : 31 Октября 2020, 19:10:37 »

Дичь какая-то. Во-первых авторизация не должна проходить это раз, а во-вторых ничего не меняет сама радиус-авторизация.
Поправьте меня, если я не прав.

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

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

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

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

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


Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #3 : 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';

Записан
Zababaha
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 8


Просмотр профиля
« Ответ #4 : 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)
« Последнее редактирование: 01 Ноября 2020, 08:21:56 от Zababaha » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #5 : 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 ;
Записан
Zababaha
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 8


Просмотр профиля
« Ответ #6 : 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 и в ЛК ровно так, как логин записан в БД.
Спасибо)
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!