用户登录以后,一段时间之后这个登录会过期,用户需要重新再次登录。我们可以记住用户的登录,让登录一直有效,直到用户自己要求退出登录 。这需要我们在 users 表里,添加一个 remember_token 的字段,在这个字段里会存储记住登录的 token 。
这样在尝试登录的时候,可以设置一下 Auth 类的 attempt 方法的第二个参数为 true .. 表示要记住用户的登录 ...
打开登录表单的视图 ... account .. login.blade.php ... 在这里我们可以添加一个复选框元素 ... 让用户自己决定是不是要记住登录 ...
先给这个元素添加一个 label 元素 ... 用 Form 类的 label 方法 ... 标签是为 remember_me 这个元素准备的 ... 标签的文字是 记住我 ... 再给它上面添加一个 css 类 ...
{{ Form::label('remember_me', '记住我', array('class' => 'checkbox')) }}
再去添加复选框 ... 用 Form 类的 checkbox 方法 ... 复选框的名字是 remember_me ...
{{ Form::checkbox('remember_me') }}
回到浏览器 ... 打开登录页面 ...
在这个登录表单上,会显示一个 记住我 的复选框 ... 下面我们要再去编辑一下控制器 ... 当用户没有勾选这个复选框的话,把 attempt 方法的第二个参数设置为 false ... 勾选的话就设置为 true ... 表示用户愿意记住登录 ..
控制器
打开 AccountController ... 找到 postLogin 这个方法 ..
设置一个变量 ... remember_me ... 它的值根据用户是否勾选了记住我这个复选框来决定 ... 勾选了,它的值就是 true ... 没勾选,它的值就是 false ...
$remember_me = Input::get('remember_me')? true : false;
然后再把这个 $remember_me 作为 attempt 方法的第二个参数 .. 这样的话,如果用户在登录的时候勾选了 记住我 ... 就会记住他的登录 ... 如果没勾选,登录会在一段时间以后过期 ...
想要判断用户的登录是不是被记住了 ... 可以使用 Auth 类的 viaRemember 方法 ... 如果是,这个方法会返回 true ... 如果你发现这个 viaRemember 不起作用,可以在 app/config 这个目录的下面,找到 session.php ... 然后把 driver 修改成 cookie ...
Auth::viaRemember()
预览
下面我们再回到浏览器上去试一下 ... 打开登录页面 ... 再打开 Chrome 浏览器的开发者工具 ... Resources ... Cookie ... 在这里,会有一条 Cookie ... 名字是 laravel_session ...
下面再去登录一下 ... 输入邮箱 ... 密码 ... 这次先不勾选 记住我 ... 点击 登录 ...
在 Cookie 这里,没有什么变化 ...
下面,我们再重新登录一下 .. 先退出登录 ...
然后再登录一次 ... 输入邮件 ... 密码 ... 这次我们勾选一下 记住我 ... 点击登录 ...
这次 Cookie 这里,会多了一条 ... remember ... 这就表示现在我已经用记住我的方式登录到了应用 ..