Auth::attempt一直返回false是什么问题?

逻辑代码

$post = $request->post();

if(!isset($post['remember'])) $post['remember'] = false;

DB::connection()->enableQueryLog();
 $credentials = $request->only(['name'=>$post['name'],'password'=>$post['password']],$post['remember']);

$result = Auth::attempt($credentials);

dump($result);

dd(DB::getQueryLog());

然后是auth.php配置

'defaults' => [
  'guard' => 'web',
  'passwords' => 'users',
],
'guards' => [
  'web' => [
  'driver' => 'session',
  'provider' => 'users',
  ],

  'api' => [
  'driver' => 'token',
  'provider' => 'users',
  'hash' => false,
  ],
],
'providers' => [
  'users' => [
  'driver' => 'eloquent',
  'model' => \App\Models\Admins::class,
  ]
],
'passwords' => [
  'users' => [
  'provider' => 'users',
  'table' => 'password_resets',
  'expire' => 60,
  'throttle' => 60,
  ],
],
'password_timeout' => 10800,

问题解决了

//这里是在网上复制的,还复制错了。后来调试的时候发现这个$credentials是空的,所以在查了一下$request->only是干嘛用的,才发现我这里是写错了。
$credentials = $request->only(['name'=>$post['name'],'password'=>$post['password']],$post['remember']);
//最后我把这一段代码删除了,直接在
Auth::attempt(['name'=>$post['name'],'password'=>$post['password']],$post['remember']);
//这样可以继续执行。但是我还遇到了另一个错误

错误:Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\Models\Admins given

//网上搜到了答案,在Model类上加\Illuminate\Contracts\Auth\Authenticatable
class Admins extends Model implements \Illuminate\Contracts\Auth\Authenticatable{
    use \Illuminate\Auth\Authenticatable;
}

目前已经正常运行了。感谢大家的查阅

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

已解决

3年前 评论
讨论数量: 6

我提交了本文的改进,只是很简单的改进,但是会让你看起来更舒服。(建议提问前看下提问的艺术,不然这么乱不会有人看的)

3年前 评论
Hunter_________ (楼主) 3年前
3年前 评论
Hunter_________ (楼主) 3年前

检查下$credentials是不是有问题?

3年前 评论
Hunter_________ (楼主) 3年前

在上面的代码中, 没有看到 $credentials 变量定义在哪里

3年前 评论
Hunter_________ (楼主) 3年前

decrypt($password)加密一下密码呢

3年前 评论
Hunter_________ (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!