如何使用sentry实现“记住我”这种功能
如何使用sentry扩展包管理用户的同时,使用其实现用cookies保存用户remember_token记录,实现一段时间内免登陆进入的功能?
我自己学习和思考了一下,貌似sentry数据库中都没有提供这个字段,是不是需要自己实现:加一个字段,然后在登陆Sentry::check的时候判断cookies中的值与db中的是否对应?
麻烦各位大神详细指教,谢谢!
我自己学习和思考了一下,貌似sentry数据库中都没有提供这个字段,是不是需要自己实现:加一个字段,然后在登陆Sentry::check的时候判断cookies中的值与db中的是否对应?
麻烦各位大神详细指教,谢谢!
3 个回复
FiveSay - 成武
赞同来自: 雨师
雨师
赞同来自:
也就是有没有一个地方能设置cookies生存期
雨师
赞同来自:
在登陆验证的时候使用函数 ,其中他的第二个参数如果设置为true则会记录cookie,而且这个cookie的时间sentry写死了。。这个时间是:(在文件 中可见)
这。。。是5年啊。。。
然后...经过试验,如果想要自己定义cookies时间,需要改
的代码了。可以改为:
`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大神