Nano Hash - криптовалюты, майнинг, программирование

Как создать настраиваемое поле пароля для Laravel Auth

Мне нужно войти в систему пользователей, зарегистрированных в таблице Igrejas, у которых есть поля responsavel_cpf и responsavel_senha, но Laravel в функции validateCredentials ожидает имени 'password'.

public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];
}

Я безуспешно пытался войти в систему с помощью попытки:

$userdata = array(
    'responsavel_cpf'      => Input::get('email'),
    'responsavel_senha'    => Input::get('password')
);

if (Auth::guard('igrejas')->attempt($userdata)) {
    return Redirect::to('dashboard_paroquia');
} else {
    return Redirect::to('login');
}

Что мне делать, чтобы заменить поля по умолчанию электронная почта и пароль на Response_cpf и Responseavel_senha?


  • какую версию Laravel вы используете? 06.01.2020
  • вы меняли конфигурацию ›файл auth.php 'web' =› ['driver' = ›'session', 'provider' =› 'customusers',], 06.01.2020
  • @AmitKumar, я использую версию 5.8.x 06.01.2020
  • @JadavPalak Я пробую это, но он выполняет ту же функцию, которая требует $ plain = $ credentials ['пароль'] 06.01.2020

Ответы:


1

Вы можете переопределить столбец пароля в своей пользовательской модели следующим образом:

// User.php
public function getAuthPassword()
{
    return $this->custom_pw_field;
}

Однако, если вы действительно хотите передать массив, который явно не содержит password в Auth::guard('xxx')->attempt($credentials) (для чего нет причин!), Вам, вероятно, придется переопределить и добавить Illuminate\Auth\EloquentUserProvider вручную, что кажется большим трудом.

Поэтому я предлагаю просто использовать следующее:

Auth::guard('xxx')->attempt([
    'email' => $request->post('email'),
    'password' => $request->post('password')
]);

Затем ключ password должен соответствовать заданному вами custom_pw_field.

Объяснение

Посмотрев на источник Illuminate\Auth\EloquentUserProvider и проверив функцию public function retrieveByCredentials(array $credentials), вы увидите, что она делает:

  • Найдите первую запись в таблице аутентификации, которая соответствует всем условиям в массиве $credentials, кроме password (в приведенном выше примере просто email). Таким образом, вы можете добавить, например, еще один ключ, например is_webmaster, например $authGuard->attempt(['email' => $request->post('email'), 'is_webmaster' => 1]), который затем будет извлекать первую запись пользователя, имеющую эти свойства.
  • После получения этой записи хэш из ее столбца пароля проверяется на соответствие введенным вами данным.
06.01.2020
  • Проблема его решения в том, что email не заменяется на responsavel_cpf. 06.01.2020
  • если вы прочитаете его полностью, вы увидите, что вы можете свободно заменить email любым другим столбцом в вашей таблице, поскольку он в основном добавляется к запросу, который дает вам запись-to be authenticated-. 07.01.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование