在 L4 中使用 Sentry 时,是否可以让一个帐户同时在多台计算机上使用?现在,Sentry 会在另一台计算机上使用同一帐户时注销用户。
现在我正在努力避免这种情况发生,并让两个用户同时登录。我知道当用户退出时这是一项安全功能,但我的项目的情况不是你所说的normal。
在 L4 中使用 Sentry 时,是否可以让一个帐户同时在多台计算机上使用?现在,Sentry 会在另一台计算机上使用同一帐户时注销用户。
现在我正在努力避免这种情况发生,并让两个用户同时登录。我知道当用户退出时这是一项安全功能,但我的项目的情况不是你所说的normal。
扩展 Nico Kaag 的回答和实施 spamoom 的评论:
/app/config/packages/cartalyst/sentry/config.php
...
// Modify users array to point to custom model.
'users' => array(
'model' => 'User',
'login_attribute' => 'email',
),
...
/app/models/User.php
use Cartalyst\Sentry\Users\Eloquent\User as SentryUser;
class User extends SentryUser
{
...
...
// Override the SentryUser getPersistCode method.
public function getPersistCode()
{
if (!$this->persist_code)
{
$this->persist_code = $this->getRandomString();
// Our code got hashed
$persistCode = $this->persist_code;
$this->save();
return $persistCode;
}
return $this->persist_code;
}
}
这是可能的,但 Sentry 本身不支持。为此,您必须更改 Sentry 中的一些核心代码,或者找到一种方法来覆盖 Sentry 代码中的 User 类。
您需要调整的函数是 User 模型中的“GetPresistCode()”,可以在以下位置找到:
/vendor/cartalyst/sentry/src/Cartalyst/Sentry/Users/Eloquent/User.php
这就是函数的样子(未经测试):
/**
* Gets a code for when the user is
* persisted to a cookie or session which
* identifies the user.
*
* @return string
*/
public function getPersistCode()
{
if (!$this->persist_code) {
$this->persist_code = $this->getRandomString();
// Our code got hashed
$persistCode = $this->persist_code;
$this->save();
return $persistCode;
}
return $this->persist_code;
}
我不得不说我强烈建议您不要更改 Sentry 中的代码,并且您可以找到另一种方法,但这可能真的很难。