Yii :: app() - > user-> id有时会给出空结果

时间:2016-07-22 19:14:50

标签: php heroku yii

在Heroku上主持 Yii 1.14 PHP 5.6

当Yii :: app() - > user-> id有时会返回id但在其他时间返回空时出现陌生人错误。相同的页面加载会导致这种奇怪的行为。

我在名为AdminController.php的父类中检查了这一点

class AdminController extends CController
{
public $partnerCount;
public $vendorCount;
public $plantationMarkers;

public function init()
{
    echo Yii::app()->user->id;

    if(empty(Yii::app()->user->id)) {
        echo 'User id empty: '. Yii::app()->user->id;
        //$this->redirect(Yii::app()->createAbsoluteUrl('admin/auth/login'));
        exit;
        return false;
    }
    elseif(!Yii::app()->user->checkAccess(User::PARTNER)) {
        $this->layout = 'column1';
        $this->render('/auth/not-authorized');
        return false;
    }

    $this->partnerCount = $this->getPartnerCount();
    $this->vendorCount = $this->getVendorCount();

    $this->plantationMarkers = $this->getPlantationMarkers();

    return true;
}

所以在这段代码中'用户ID为空:'在某些情况下被回显,而在其他情况下,我得到了id。

关键在于代码没有变化,如何在某些时候工作,而不是在其他时间。

1 个答案:

答案 0 :(得分:0)

通过更改要存储在DB表中的会话来解决。我不确定但是在Heroku下的服务器上存在Yii存储会话的问题。 在'组件'。

下的配置数组中需要进行更改

来自:

        'session' => array(
            'class' => 'CHttpSession',
            'timeout' => 2400,
            'cookieParams' => array(
                    'httpOnly' => true,
                    'secure' => false,
            ),
    ),

致:

        'session' => array(
            'timeout' => 2400,
            'cookieParams' => array(
                    'httpOnly' => true,
                    'secure' => false,
            ),
            'class' => 'CDbHttpSession',
            'connectionID' => 'db',
            'sessionTableName' => 'lig_session',
    ),