如何使用sentry实现“记住我”这种功能

如何使用sentry扩展包管理用户的同时,使用其实现用cookies保存用户remember_token记录,实现一段时间内免登陆进入的功能?

我自己学习和思考了一下,貌似sentry数据库中都没有提供这个字段,是不是需要自己实现:加一个字段,然后在登陆Sentry::check的时候判断cookies中的值与db中的是否对应?

麻烦各位大神详细指教,谢谢!
已邀请:

雨师

赞同来自:

谢谢,那么请问一下如何设置记住这个用户的时间呢?

也就是有没有一个地方能设置cookies生存期

雨师

赞同来自:

谢谢成武老师提示,根据文档和代码我找到怎么用了。

在登陆验证的时候使用函数
public function authenticate(array $credentials, $remember = false)
,其中他的第二个参数如果设置为true则会记录cookie,而且这个cookie的时间sentry写死了。。这个时间是:(在文件
\vendor\cartalyst\sentry\src\Cartalyst\Sentry\Cookies\NativeCookie.php
中可见)

1.jpg


这。。。是5年啊。。。

然后...经过试验,如果想要自己定义cookies时间,需要改
C:\Program Files\WAMP\Apache24\htdocs\laravel-master\vendor\cartalyst\sentry\src\Cartalyst\Sentry\Sentry.php\login

的代码了。可以改为:
`public function login(UserInterface $user, $remember = false,$time = 0)
{
if ( ! $user->isActivated())
{
$login = $user->getLogin();
throw new UserNotActivatedException("Cannot login user [$login] as they are not activated.");
}

$this->user = $user;

// Create an array of data to persist to the session and / or cookie
$toPersist = array($user->getId(), $user->getPersistCode());

// Set sessions
$this->session->put($toPersist);

if ($remember && $time > 0)
{
$this->cookie->put($toPersist, $time);
}

// The user model can attach any handlers
// to the "recordLogin" event.
$user->recordLogin();
}`
再次谢谢@five-say大神

要回复问题请先登录注册