Как сделать регистрозависимую авторизацию Laravel(MySQL)?
Мне нужно, чтобы при авторизации test@mail.com и tEst@mail.com (то же самое и с паролями) были разными для ларавела. Но на практике выходит, что все наоборот. БД MySQL, кодировка utf8_general_ci.
Это особенность ларавела или особенность базы данных? Что делать?
Александр Талалаев: Это зависит от алгоритма хэширования. Тот же md5 или семейство sha не чувствительны к регистру, ибо являются лишь шестнадцатеричной записью вычисленных байтов.
D3lphi: что значит не чувствительны к регистру. Для них входная строка password и Password совершенно разные и на выходе будет разный хэш.
Ну и тем более в Laravel используется bcrypt с солью, пароли не будут одинаковы при вводе разным регистром.
Вот только если человек их не хранит в открытом виде и там уже влияют иные факторы, как то тип сравнения установленный в таблице.
D3lphi: ну так как я понял человек жаловался что при вводе пароля не имеет значения в каком регистре он написан. Отсюда и вывод что либо он не шифруется у топикастера либо проблема с проверкой в целом.
Он же не хеш имел ввиду, что он прям проверял и подбирал хэши одинаковые, но с разным регистром(нетривиальная задачка же ;-) )
Это особенность текущего сравнения utf8_general_ci. А это именно сравнение, а не кодировка! Кодировка - это utf8. Суффикс _ci означает case insensitive (То есть, нечувствительный к регистру). Установите сравнение таблиц utf8_bin, чтобы сделать значения чувствительными к регистру.