Как проверить соответствие имени пользователя и пароля laravel 7

Я создаю простую форму входа в систему, используя 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',
    ];
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вам нужно заменить 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";
}  

Вызов функции-члена try() для null

hari dran 12.12.2020 10:02

if (auth()->user()->attempt(array('uname' => $a, 'password' => $b))){ отображается ошибка Вызов функции-члена try() при нулевом значении

hari dran 12.12.2020 10:02

if (auth()->user()->attempt(array('uname' => $$user, 'password' => $$pass))){отображается ошибка Вызов функции-члена try() при нулевом значении

hari dran 12.12.2020 10:03

извините, моя ошибка, я обновляю его до auth()->attempt

Joseph 12.12.2020 10:03

да, но если я ввожу правильное имя пользователя и пароль, также отображается сообщение «Неверные учетные данные»

hari dran 12.12.2020 10:06

я изменил, но тот же msg Неверные учетные данные

hari dran 12.12.2020 10:11

не могли бы вы проверить, что пароль пользователя thta хеширован в вашей базе данных?

Joseph 12.12.2020 10:12

и проверьте также, что данные вашей формы правильно поступают на ваш контроллер, как вы ожидаете

Joseph 12.12.2020 10:13

это проблема, потому что attempt хешируйте свой пароль и сравнивайте его с вашим хэшированным паролем в базе данных

Joseph 12.12.2020 10:15

так как проверить

hari dran 12.12.2020 10:15

Давайте продолжим обсуждение в чате.

Joseph 12.12.2020 10:15

Другие вопросы по теме