如何检查用户名和密码匹配 laravel 7

How to check username and password match laravel 7

我正在使用 laravel 创建简单的登录表单 7.i 想检查用户名和密码 match.it 是否匹配重定向主页。如果它没有再次重定向登录页面,则显示错误用户名或密码不匹配。我尝试了下面的代码我得到了错误 Call to undefined method 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

另一件事你不需要手动检查 unamepassowrd 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";
}