Вкратце: драйвер Sessions guard отклоняет мои попытки входа в систему.
Перед созданием пользовательского интерфейса Laravel я уже создал систему аутентификации для моего интерфейса, используя JWT в качестве драйвера защиты API.
Я установил пользовательский интерфейс Laravel, чтобы использовать пакет разрешений Spat ie, который также был установлен и создал несколько дополнительных таблиц.
После установки пользовательского интерфейса Laravel я успешно зарегистрировался новый пользователь, но не был перенаправлен на домашний экран. Я попытался войти в систему как новый пользователь и получил ответ о том, что мои учетные данные не были распознаны. Затем я попытался войти в систему с пользователем, который был ранее создан в таблице пользователей, посредством регистрации через внешний интерфейс ...
Хотя в этот раз он не выдал ошибку, он все равно не перенаправил меня. Затем я попытался войти в приложение веб-интерфейса с помощью только что созданного пользователя и смог это сделать. В этот момент я обнаружил конфликт с токенами.
Я посмотрел в RegisterController. php и увидел следующее:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
Моя система аутентификации JWT внешнего интерфейса также использует User. php и вот я посмотрел и увидел, что пароль шифровался дважды. Сначала с Ha sh :: а затем с bcrypt. Поэтому я удалил шифрование Ha sh.
Я успешно зарегистрировался, но снова не был перенаправлен на дом. Я попытался войти снова и снова не смог сделать это, но на этот раз я не получил сообщение об ошибке! Зарегистрированный пользователь теперь вел себя так же, как и пользователи, зарегистрированные через приложение переднего плана.
Я построчно просматривал код, тратя часы на вывод значений и т.д. c. и мог видеть, что все принимается, и я был перенаправлен на дом, но HomeController. php затем передавал мои учетные данные через аутентификацию, которая отклоняла их, а затем перенаправлял меня обратно для входа в систему !!
Единственный способ получить доступ к дому - это изменить промежуточное ПО в HomeController. php с 'auth' на 'guest':
public function __construct()
{
$this->middleware('guest'); // changed from 'auth'
}
В документации Spat ie заявляет следующее:
Если ваше приложение использует только одну защиту, но не является веб-сайтом (по умолчанию Laravel, который показывает «first» в файле конфигурации auth), то измените порядок перечисленных вами защитников в ваш config / auth. php, чтобы указать вашу основную охрану по умолчанию и как первую в списке определенных охранников. Пока вы редактируете этот файл, лучше всего удалить и все не используемые вами средства защиты.
Поэтому я переключил защиту в config / auth. php, чтобы api был первым, но это не имело никакого эффекта.
'guards' => [
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
Интерфейс использует API Api Guard, а серверная часть использует веб, но они оба используют одно и то же приложение / пользователя. Это, я думаю, должно быть причиной проблемы, но я новичок в Laravel, и после нескольких часов чтения и тестирования я все еще борюсь. Что он хочет, что мне не хватает !? Теперь пароль принимается, поэтому не может быть, чтобы ...
Любая помощь была бы очень признательна. Спасибо.