2017-01-31 1 views
3

Я только что добавил миграцию Laravel по умолчанию для использования сеанса с базой данных. До этого я использовал файловую систему. Я сделал это: php artisan session:table, затем я добавил весь столбец, который я уже использовал с сеансом файла. После этого я изменил config/session.php со значением по умолчанию 'driver' => env('SESSION_DRIVER', 'database'),, а затем я изменил .env кLaravel 5.3: База данных сеансов работает не так, как ожидалось

BROADCAST_DRIVER=log 
CACHE_DRIVER=file 
SESSION_DRIVER=database 
QUEUE_DRIVER=sync 

Так что все любят быть хорошо для меня, я запустить эту команду: artisan admin:clear. Команда сделать это:

public function handle() 
{ 
    Artisan::call('clear-compiled'); 
    Artisan::call('cache:clear'); 
    Artisan::call('config:clear'); 
    Artisan::call('view:clear'); 
    Artisan::call('route:clear'); 
} 

Тогда я запущенной эту команду: composer dumpautoload и затем php artisan migrate

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

РЕАЛЬНАЯ ПРОБЛЕМА
Теперь я все еще получаю файлы сеансов, и я также сеанс в базу данных, но только дефолты 6 колонок из команды php artisan session:table заполнены. Все остальное пребывание в колонке null.

ЦЕЛЬ
Я хочу использовать базу данных, потому что после некоторого чтения, это способ, чтобы иметь возможность изменять данные в то время как пользователь является Auth(). Я использую сеанс для просмотра. Пример:

@if(Session::get('intellitaux_simple') == 1) 
    <li class="@if ($coreData['navChild'] == 'simple') active @endif"> 
     <a href="{{ url('/intellitaux/simple') }}">INTELLITAUX SIMPLIFIÉ</a> 
    </li> 
@endif 

данные На сессии добавляется в данный момент журнал пользователя при использовании LogSuccesfulLogin.php события.

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

Если вы считаете, что есть лучший способ достичь своей цели, предложите, я буду признателен!

ответ

1

Почему вы пишете but only the default column from the php artisan session:table command are filled? session:table создает миграцию с 6 полей, а не только один:

Schema::create('sessions', function (Blueprint $table) { 
     $table->string('id')->unique(); 
     $table->integer('user_id')->nullable(); 
     $table->string('ip_address', 45)->nullable(); 
     $table->text('user_agent')->nullable(); 
     $table->text('payload'); 
     $table->integer('last_activity'); 
    }); 

Вы не упомянули о php artisan migrate после php artisan session:table а. Вы мигрировали таблицу из 6 столбцов?

Эта таблица заполняется в следующем файле vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php:

$payload = ['payload' => base64_encode($data), 'last_activity' => time()]; 

    if (! $container = $this->container) { 
     return $payload; 
    } 
    if ($container->bound(Guard::class)) { 
     $payload['user_id'] = $container->make(Guard::class)->id(); 
    } 

    if ($container->bound('request')) { 
     $payload['ip_address'] = $container->make('request')->ip(); 

     $payload['user_agent'] = substr(
      (string) $container->make('request')->header('User-Agent'), 0, $ 
     ); 
    } 
+0

Спасибо, я просто сделал некоторые редактирования о мигрируют по умолчанию и PHP. Я не знал о DatabaseSessionHandler. Я использую Session :: set («ключ», значение) помещает значение в ключевой столбец таблицы сеанса в строке сеанса пользователя auth. –

+1

'Session :: set ('ключ', значение)' изменяет только поле «полезная нагрузка». –

+0

Итак, добавление всех столбцов для каждого ключа было бесполезным. Спасибо! В этом случае у меня есть два вопроса, связанных с этим сообщением. 1. Почему у меня все еще есть файл сеанса в папке storage/framework/sessions? 2. Я получил несколько строк сеанса для одного и того же user_id в таблице сеансов. Есть ли способ найти, какой пользователь аутентифицировал пользователя? –