1.模拟用户登录:

//强制用户id位100的人登录
Auth::loginUsingId(100);
//获取这个登录用户的id;
dd(auth()->user()->id);

在测试的时候,我需要测试某一个登录用户的相关信息,我们是可以在auth provider里面进行强制登陆的,这样的话据不用在某一个具体的方法里面又写一段loginUsingId.

app\Providers\AuthServiceProvider.php

在boot里面加上你想要登陆的用户,那么这个用户就在全局登陆了.

public function boot()
{
auth()->loginUsingId(348);
$this->registerPolicies();
}

测试结束之后,去掉那一行即可.如果想在某个方法里面临时换个用户登陆,那么再次使用loginUsingId即可.

2.修改用户登录时侯的验证方式:

laravel默认验证时结合email和password字段进行验证的,如果我们想要更改这个验证的字段或者加上我们额外的条件,例如:status必须要是1,那么我们就可以在LoginController.php里面重写AuthenticatesUsers里面的validateLogin的内容,举例如下:

修改文件所在位置:
D:\phpStudy\WWW\xxx\app\Http\Controllers\Auth\LoginController.php

...
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
...
#三个有用的配置项
protected $redirectTo = '/';
protected $maxAttempts = '10'; #默认值:5
protected $decayMinutes = '1'; #默认值1

protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => [
'required',
Rule::exists('users')->where(function ($query) {
$query->where('status', 1);
}),
],
'password' => 'required|string|min:6',
]);
}

前台验证通过,说明生效,这个原理很简单,就是优先级的问题,我有一篇文章专门讲述这个问题:​

官方的方法:
​​​https://laravel.com/docs/5.5/authentication​