Laravel: Enable Sentry user account be used in multiple computers

后端 未结 2 2066
醉话见心
醉话见心 2021-02-04 10:48

While using Sentry in L4, is it possible to make an account be used in multiple computers at the same time? Right now, Sentry logs out the user the moment the same account is us

相关标签:
2条回答
  • 2021-02-04 11:28

    It is possible, but not supported by Sentry itself. To do this, you have to change some core code in Sentry, or find a way to override the User class that's in the Sentry code.

    The function you need to adjust is "GetPresistCode()" in the User model, which can be found in:

    /vendor/cartalyst/sentry/src/Cartalyst/Sentry/Users/Eloquent/User.php
    

    And this is how the function should look like (not tested):

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

    I have to say that I highly recommend you don't change the code in Sentry, and that you find another way around, but that might be really hard.

    0 讨论(0)
  • 2021-02-04 11:40

    Extension to Nico Kaag's answer and implementation of spamoom's comment:

    /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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题