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;
}
目前已经正常运行了。感谢大家的查阅
推荐文章: