Я создаю простую форму входа в систему, используя laravel 7. Я хочу проверить совпадение имени пользователя и пароля. Это совпадение перенаправляет домой. если он не перенаправляет страницу входа, снова показывает ошибку, имя пользователя или пароль не совпадают. Я попробовал приведенный ниже код. Я получил ошибку. Вызов неопределенного метода App\User::attempt()
Контроллер входа в систему.
public function check(Request $request)
{
$uname = $request->uname;
$password = $request->password;
$user = User::where('uname',$a)->get()->last();
$pass = User::where('password',$b)->get()->last();
if (User::attempt(array('uname' => $uname , 'password' => $password ))){
return "success";
}
else {
return "Wrong Credentials";
}
}
просмотреть Войти
@extends('layout')
@section('content')
<div class = "row">
<div class = "col-lg-12 margin-tb">
<div class = "pull-left">
<h2>Login</h2>
</div>
<div class = "pull-right">
</div>
</div>
</div>
@if ($errors->any())
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class = "row">
<form action = "{{ route('login.check') }}" method = "POST">
@csrf
<div class = "col-sm-4">
<div class = "left">
<strong>UserName</strong>
<input type = "text" name = "uname" class = "form-control" placeholder = "UName">
</div>
<div class = "left">
<strong>Password</strong>
<input type = "password" class = "form-control" name = "password" placeholder = "Password"></textarea>
</div>
</br>
<div class = "left">
<button type = "submit" class = "btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
Модельный пользователь
protected $fillable = [
'name', 'email', 'password',
];






вам нужно заменить User::attempt на auth()->attempt
еще одна вещь, которую вам не нужно проверять uname и passowrd вручную, laravel сделает это за вас внутри метода attempt, поэтому было бы более эффективно, если бы
ты удаляешь эти две строчки
$user = User::where('uname',$a)->get()->last();
$pass = User::where('password',$b)->get()->last();
наконец, зависит от вашей User модели, которая у вас есть name, а не uname, поэтому вам нужно обновить ее следующим образом.
if (auth()->attempt(array('name' => $uname , 'password' => $password ))){
return "success";
} else {
return "Wrong Credentials";
}
if (auth()->user()->attempt(array('uname' => $a, 'password' => $b))){ отображается ошибка Вызов функции-члена try() при нулевом значении
if (auth()->user()->attempt(array('uname' => $$user, 'password' => $$pass))){отображается ошибка Вызов функции-члена try() при нулевом значении
извините, моя ошибка, я обновляю его до auth()->attempt
да, но если я ввожу правильное имя пользователя и пароль, также отображается сообщение «Неверные учетные данные»
я изменил, но тот же msg Неверные учетные данные
не могли бы вы проверить, что пароль пользователя thta хеширован в вашей базе данных?
и проверьте также, что данные вашей формы правильно поступают на ваш контроллер, как вы ожидаете
это проблема, потому что attempt хешируйте свой пароль и сравнивайте его с вашим хэшированным паролем в базе данных
так как проверить
Давайте продолжим обсуждение в чате.
Вызов функции-члена try() для null