我是laravel的新手,并为我的应用程序添加了一个userauthentification。现在我不希望在关闭浏览器后记住经过身份验证的用户,但事实确实如此。我怎么阻止这个? remember_token是一个可以为空的varchar(100),它是使用第一次登录设置的,然后在每次用户注销时更新。
当我在auth :: attempt()中传递true作为参数时,不应该只记住用户吗?
Tyvm提前......
这是我模特的一部分:
$validation = Validator::make($input, $rules, $messages);
if ($validation->fails())
{
$this->response['message'] = $validation->getMessageBag()->first();
}
else
{
$this->response['message'] = $messages['user.missing'];
if (Auth::attempt(array(
'emailadress' => $input['emailadress'],
'password' => $input['password'])))
{
$this->response['valid'] = true;
$this->response['message'] = 'Hey '.Auth::user()->firstname.'!';
$this->response['redirect'] = '/hello';
}
}
return $this->response;
答案 0 :(得分:0)
正如您所说,您没有在Auth :: attempt()中包含remember参数,所以确实 - 您的用户不被记住。
只要会话保持活动状态,他们就会登录。浏览器在关闭时不会清空他们的cookie,除非用户特意告诉它,并且你肯定无法检测到#34;他们的浏览器从服务器端关闭,并从那一端到期。
因此,如果您希望会话更快地过期,您必须在PHP设置中选择不同的会话生命周期,或者you can do something like this在其中为其活动加时间戳并在他们闲置时将其注销一段时间。
如果您选择缩短会话生命周期,可以在php.ini
:
ini_set(‘session.gc_maxlifetime’,30);
ini_set(‘session.gc_probability’,1);
ini_set(‘session.gc_divisor’,1);