关于laravel开箱即用的登录系统-----记住密码(自动登录)

大家在做网站的时候都会遇到自动登录的需求,比较传统的方式,是把用户名和密码写在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字段的一个随机值,下面两张图就是前后对比。

登录前.png

登录后.png

从登录前后可以看到,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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容