Laravel:启用Sentry用户帐户可在多台计算机中使用

时间:2013-06-30 19:01:30

标签: php laravel cartalyst-sentry

在L4中使用Sentry时,是否可以同时在多台计算机上使用帐户?现在,Sentry会在另一台计算机上使用同一帐户时注销用户。

现在我正在尝试发生 not 并让两个用户同时登录。我知道这是一个安全功能,当用户退出时,但我的项目的情况不是你所谓的正常

2 个答案:

答案 0 :(得分:22)

扩展到Nico Kaag对垃圾邮件评论的回答和实施:

/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;
    }
}

答案 1 :(得分:5)

有可能,但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中的代码,并且您可以找到另一种解决方法,但这可能非常难。