【问题标题】:Auth::attempt($credentials) Always returns false in Laravel 8.76.2Auth::attempt($credentials) 在 Laravel 8.76.2 中总是返回 false
【发布时间】:2022-01-22 01:53:39
【问题描述】:

我在 Laravel 8.7 中使用 Auth::attempt($credentials),它总是返回 false。

我的登录刀片是

资源/views/login/login.blade.php

<form action="{{ route('login.custom') }}" method="post">
        @csrf
        <div class="input-group mb-3">
          <input type="email" class="form-control" placeholder="Email" name="email">
          <div class="input-group-append">
            <div class="input-group-text">
              <span class="fas fa-envelope"></span>
            </div>
          </div>
        </div>
        @error('email')
            <div class="alert alert-danger">{{ $message }}</div>
        @enderror
        <div class="input-group mb-3">
          <input type="password" class="form-control" placeholder="Password" name="password">
          <div class="input-group-append">
            <div class="input-group-text">
              <span class="fas fa-lock"></span>
            </div>
          </div>
        </div>
        @error('password')
            <div class="alert alert-danger">{{ $message }}</div>
        @enderror
        <div class="row">
          <div class="col-8">
            <div class="icheck-primary">
              <input type="checkbox" id="remember">
              <label for="remember">
                Remember Me
              </label>
            </div>
          </div>
          <!-- /.col -->
          <div class="col-4">
            <button type="submit" class="btn btn-primary btn-block">Sign In</button>
          </div>
          <!-- /.col -->
        </div>
      </form>

路由器

Route::post('custom-login', [LoginController::class, 'customLogin'])->name('login.custom');

我的控制器代码是这样的 - 我正在使用路由器访问控制器

登录控制器.php

public function customLogin(Request $request)
    {
        //dd(print_r($request));
        $request->validate([
            'email' => 'required',
            'password' => 'required',
        ]);

        // $email = $request->input('email');
        // $password = $request->input('password');
        $credentials = $request->only('email', 'password');
        if (Auth::attempt($credentials))
        {
            return "Success";
        }
        else
        {
            return "Fail";
        }

        //return redirect("login")->withSuccess('Login details are not valid');
    }

当我使用 Auth::attempt($credentials) 时,总是返回一个错误的语句。请帮助我找出实际问题或建议我最好的解决方案。 我已经尝试了很多组合来解决这个问题,但仍然无法正常工作。

This is my table structure

This is output

【问题讨论】:

  • 密码是否在数据库中散列?
  • 不,密码没有在数据库中散列,我已经添加了截图“这是我的表结构-i.stack.imgur.com/236mh.jpg

标签: php authentication laravel-8 laravel-authentication


【解决方案1】:

您需要对数据库中的密码进行哈希处理。身份验证系统期望密码在数据库中进行散列。它将针对纯文本版本(用户提交的值)和来自数据库的哈希密码进行哈希检查。

“如果找到用户,则将存储在数据库中的散列密码与通过数组传递给方法的password值进行比较。”

Laravel 8.x Docs - Authentication - Manually Authenticating Users

【讨论】:

  • 是的,当我对数据库中的密码进行哈希处理后,它工作正常,非常感谢
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 2016-09-12
  • 2017-05-24
  • 2013-06-11
  • 2015-12-10
  • 2019-04-14
  • 2014-03-15
相关资源
最近更新 更多