Auth 自动验证 ettempt 返回始终 false
Controller代码
public function login(Request $request)
{
if($request->isMethod('POST')){
$this->validate($request,[
'email' => 'required|email',
'password' => 'required|between:8,32',
'captcha' => 'required|captcha'
],[
'required' => ':attribute不能为空',
'email' => ':attribute不正确',
'captcha' => ':attribute验证失败',
'between' => ':attribute必须在8到32位'
],[
'email' => '邮箱',
'password' => '密码',
'captcha' => '验证码'
]);
$date = $request->only(['email','password']);
$requests = Auth::guard('web')->attempt($date,$request->get('online'));
dd($requests);
}else{
return view('home.login');
}
}
Model代码
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class ios extends Model implements Authenticatable
{
protected $table = 'ios';
protected $fillable = ['username','password','email'];
/**
* Get the name of the unique identifier for the user.
*
* @return string
*/
public function getAuthIdentifierName()
{
// TODO: Implement getAuthIdentifierName() method.
}
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
// TODO: Implement getAuthIdentifier() method.
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
// TODO: Implement getAuthPassword() method.
}
/**
* Get the token value for the "remember me" session.
*
* @return string
*/
public function getRememberToken()
{
// TODO: Implement getRememberToken() method.
}
/**
* Set the token value for the "remember me" session.
*
* @param string $value
* @return void
*/
public function setRememberToken($value)
{
// TODO: Implement setRememberToken() method.
}
/**
* Get the column name for the "remember me" token.
*
* @return string
*/
public function getRememberTokenName()
{
// TODO: Implement getRememberTokenName() method.
}
}
Auth配置
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\ios::class,
],





关于 LearnKu
Auth::guard('web')返回的是SessionGuard对象,它的attempt方法如下所示,如果这个方法返回false的话,就说明红色标出来的部分失败了

hasValidCredentials方法所示:
上面的user是你的ios对象,那么provider是啥呢?根据你上面的配置:
这里的provider就是EloquentUserProvider类的对象,我们再来看它的validateCredentials方法,如下:
我们看到你的模型实现了getAuthPassword方法,但是为空,那么hasher是啥呢?通过代码,我们知道它实现了Hasher接口,如下:
通过查看它的check方法,知道如果检查为true的话,那么返回为true,否则返回为false,所以说了这么多,你的getAuthPassword方法没有返回值,怎么可能验证通过呢?最起码,应该返回数据库里面的对应密码字段值吧,比如password。