Yii2 вход не работает, когда отладочный модуль не загружен

У нас есть работающее приложение Yii2, которое было Frankensteinized с использованием старой версии Yii1 в качестве основы, а затем обновлено до Yii2. Конечно, было много проблем, и мне удалось решить большинство из них, однако есть проблема, которая продолжает меня уклоняться.

Как только мы переключим среду на что-то еще, кроме DEV этот код больше не выполняется:

$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
    'class' => 'yii\debug\Module',
    // uncomment the following to add your IP if you are not connecting from localhost.
    //'allowedIPs' => ['127.0.0.1', '::1'],
];

Когда это не выполняется, мы не можем войти в систему. Я выделил эту проблему, оставив DEV окружение и просто комментируя этот бит. Я понятия не имею, почему кажется, что сеанс или личность не сохраняет идентификатор пользователя и просто продолжает показывать страницу входа.

Я знаю логин, User а также IdentityInterface с Yii2 многое изменилось, и мой хитрый пользовательский компонент / интерфейс мог быть одной из причин, но я не могу понять проблему и задавался вопросом, будет ли кто-то иметь удар "déjà-vu" и понять, почему модуль отладки сделал это работает.

Я временно исправил это, добавив это в init() метод:

class UserIdentity extends \yii\web\User implements \yii\web\IdentityInterface
{
    function init()
    {
        parent::init();
        $this->id = Yii::$app->session->get('id');
    }
}

Сюда, Yii::$app->user->id всегда будет иметь $_SESSION ценность в этом
,
,
,
,
,
В соответствии с моей просьбой мой полный код конфигурации web.php:

$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';

$config = [
    'id' => 'basic',
    'name' => 'NAME WIL BE HERE',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm' => '@vendor/npm-asset',
    ],
    'layout' => 'column1',
    'components' => [
        'request' => [
            'class' => 'app\components\NTDI_HttpRequest',
            'cookieValidationKey' => 'XXXXXXXXXXXXXXXXXXXX',
        ],
        'session' => [
            'class' => 'yii\web\DbSession',
            'name'=>'sess',
            'timeout'=>3600,
            'db'=>'db',
            'sessionTable'=>'session',
        ],
        'user' => [
            'identityClass' => 'app\components\UserIdentity',
            'class' => 'app\components\UserIdentity',
            'loginUrl' => array('/site/login'),
            'returnUrl' => array('/site/index'),
            'enableAutoLogin' => false,
        ],
        'errorHandler'=>array(
            'errorAction'=>'site/error',
        ),
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => $db,
        'language' => 'fr_CA',
        'sourceLanguage' => 'en_US',
        'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => false,
            'showScriptName' => true,
            'rules' => [
                '' => 'site/index',
                'membre' => 'site/login',
                'nip' => 'member/nip',
                'verif' => 'member/verif',
                'vote' => 'member/vote',
                'merci' => 'member/logout',
            ],
        ],
        'i18n' => [
            'translations' => [
                '*' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    'fileMap' => [
                        'general' => 'general.php',
                        'landing' => 'landing.php',
                        'vote' => 'vote.php',
                        'app/error' => 'error.php',
                    ],
                ],
            ],
        ],
    ],
    'params' => $params,
];


// #BUG# If this is not set, we can't login anymore and the system keeps asking for a username numnber.. why??
//*
if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}
//*/

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        'allowedIPs' => ['127.0.0.1', '::1', '192.222.216.153', '24.37.138.46'],
    ];
}

return $config;

В соответствии с просьбой @rob006, мой код UserIdentity. (извините, это грязно, большая часть этого кода уже была там, и я не хотел слишком сильно его менять

0 ответов

Другие вопросы по тегам