大家在做网站的时候都会遇到自动登录的需求,比较传统的方式,是把用户名和密码写在cookie里面,这样虽然能满足要求但是会产生一些安全问题,laravel自带的登录系统<code>form<.code>表单中自动记住密码功能,实现起来非常简单,只需要在<code>form<.code>表单中加入<code><input value="remember me" type="checkbox" name="remember"></code>就能实现,这里只需要满足一点要求就是<code>name="remember"一定要有,这是form表单请求的标志。</code>。
下面说一下原理,当选中了记住我的功能,laravel会在前端浏览器中的cookie中加入remember_web字段的一个随机值,下面两张图就是前后对比。
从登录前后可以看到,laravel会在cookie中存入一个随机值,来保证下次自动登录。如果你把这个值删掉的话,就会失去自动登录的功能。
那咱们可以看看源码,这样就可以了解到laravel是如何实现的,在<code>AuthenticatesUsers</code>中的<code>login</code>方法,里面可以看到
if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) {
return $this->handleUserWasAuthenticated($request, $throttles);
}
核心就是
// 通过 Auth::attempt() 传入 true 值来开启 '记住我' 功能
Auth::attempt($credentials, true);