#php #mysql #laravel #laravel-authentication #laravel-5.8
#php #mysql — сервер #laravel #laravel-аутентификация #laravel-5.8 #mysql
Вопрос:
Я создаю приложение Laravel 5.8, и у меня есть существующее приложение, пользователи которого зарегистрированы в таблице SQL. Я могу подключиться к sql, поэтому файлы .env верны, но мне нужны пользовательские поля в процессе аутентификации. Я проверил онлайн-руководства, но, похоже, многое изменилось с 5.6 или более старых версий, используемых в руководствах, до версии 5.8. Кто-нибудь может помочь мне сначала выяснить, как изменить поле имени пользователя на ‘username’ вместо ’email’, я уже пробовал переопределить функцию в appControllersAuthLoginController.php но это просто продолжает говорить «Эти учетные данные не соответствуют нашим записям». в разделе ошибок. Моя текущая таблица с именем ‘users_custom’ содержит следующие поля:
- идентификатор (УНИКАЛЬНЫЙ, int (5))
- имя пользователя (varchar(100))
- пароль (varchar(100)) Примечание: Это более старый пароль в кодировке md5. Мне также нужна помощь с хэш-форматом Laravel, не требуя от пользователей повторного ввода своих паролей, если это возможно.
- кодовая фраза (varchar(200)) // Это было сделано для DialogFlow в более ранней версии. К этому не нужно обращаться / проверять laravel.
Мое приложение не работает с электронной почтой пользователя, поэтому это поле отсутствует в моей таблице пользователей. Я определил protected $table='users_custom';
в модели пользователей.
РЕДАКТИРОВАТЬ: решено
Не уверен, как, но когда я начал заново с контроллерами авторизации по умолчанию и моделью пользователя, я просто изменил имя таблицы на protected $table = users_custom
и добавил public function username() { return 'username'; }
в LoginController, и теперь это работает.
Комментарии:
1. Вы должны определить столбец базы данных, который будет использоваться для входа в LoginController вместо User.php
2. Извините, исправил это. Я добавил это в LoginController, а не в пользовательскую модель.
3. Работает ли ваш логин сейчас?
4. Нет. Я хочу сказать, что я делал это раньше, я просто неправильно это описал. Даже сейчас я просто получаю то же самое старое «Эти учетные данные не соответствуют нашим записям».
5. Добавьте этот метод в начало logincontroller, а также dd(request()-> all()) в контроллере входа в систему, чтобы убедиться, что данные, передаваемые контроллеру, соответствуют вашим ожиданиям от клиента. Убедитесь, что вы добавили этот метод после аутентификации пользователя с помощью общедоступной функции username() { возвращает ‘username’; }
Ответ №1:
В config/auth.php измените ‘table’ => ‘users’ на ‘table’ => ‘custom_user’
и создайте миграцию для учетных записей
Комментарии:
1. Пожалуйста, добавьте некоторое объяснение к вашему ответу, чтобы другие могли извлечь из него уроки
2.
config/auth.php
ничего не делайте при миграции