Не может пройти проверку подлинности в Laravel - PullRequest
0 голосов
/ 01 июля 2018

У меня эта ошибка в Laravel последней для аутентификации

Аргумент 2 передан функции Illuminate \ Auth \ SessionGuard :: __ construct () быть экземпляром Illuminate \ Contracts \ Auth \ UserProvider, задано значение NULL, называется в G: \ XAMPP \ HTDOCS \ newrestaurantcrm \ поставщика \ Laravel \ рамки \ SRC \ Осветите \ Auth \ AuthManager.php

Кто-нибудь может дать мне представление об этой ошибке, почему эта ошибка происходит? Я использую приведенный ниже код для аутентификации в моем Auth\AuthController.php файле

protected function login(Request $request) {
    $email = $request->email;
    $password = bcrypt($request->password);
    if (Auth::login(['email' => $email, 'password' => $password])) {
        return redirect()->intended('/admin/dashboard');
    }
}

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Измените свой код на

public function login(Request $request) {
    $email = $request->get('email');
    $password = $request->get('password');
    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        return redirect()->intended('/admin/dashboard');
    }
}

Я изменил protected на public, Auth::login() на Auth::attempt(). Если вы используете login, вам действительно нужно будет передать User object, который вы хотите использовать для входа. Вам не нужно шифровать пароль для передачи в попытке и. Чтобы сделать это проще, вы можете написать

public function login(Request $request) {
    if (Auth::attempt($request->only('email', 'password'))) {
        return redirect()->intended('/admin/dashboard');
    }
}

Это, конечно, предполагает, что ваша форма имеет правильное имя для полей email и password, а также имеет такие же поля email и password в таблице users.

0 голосов
/ 01 июля 2018

Если вы аутентифицируете пользователя по email и password, тогда используйте Auth::attempt или Auth::once ( для одного запроса ). Когда у нас есть пользовательский экземпляр и мы хотим войти в систему с этим пользовательским экземпляром, тогда мы используем Auth::login. Для вашего случая используйте Auth::attempt вот так

public function login(Request $request) {
    $email = $request->email;
    $password = bcrypt($request->password);
    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        return redirect()->intended('/admin/dashboard');
    }
}

Подробности: https://laravel.com/docs/5.6/authentication#included-authenticating

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...