【问题标题】:How to check username and password match laravel 7如何检查用户名和密码是否匹配 laravel 7
【发布时间】:2020-12-12 08:57:04
【问题描述】:

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

【问题讨论】:

    标签: laravel laravel-7


    【解决方案1】:

    您需要将User::attempt 替换为auth()-&gt;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";
    }  
    

    【讨论】:

    • 在 null 上调用成员函数尝试()
    • if (auth()->user()->attempt(array('uname' => $a, 'password' => $b))){ 显示错误调用成员函数在 null 上尝试()
    • if (auth()->user()->attempt(array('uname' => $ $user , 'password' => $$pass))){ 显示错误null 上的成员函数尝试()
    • 对不起我的错误我更新为auth()-&gt;attempt
    • 是的,但如果我输入正确的用户名和密码也会显示错误凭据
    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2014-05-20
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多