Laravel-5.3: сеанс обновления работает неправильноPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel-5.3: сеанс обновления работает неправильно

Сообщение Anonymous »

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

Код: Выделить всё

@if( Session::get('quicktrade') == 'Client' )
[*]
[url=javascript:;]
[i][/i]
QUICK[TRADE]

@if ($coreData['navParent'] == 'quicktrade')  @endif
[/url]
[list]
@if( Session::get('quicktrade_evaluation') == 1 )

[url={{ url(]
NOUVELLE ÉVALUATION[/url]

@endif
@if ( Session::get('quicktrade_liste') == 1 )
[*]
[url={{ url(]
LISTE DES VÉHICULES[/url]

@endif
@if ( Session::get('quicktrade_statistiques') == 1 )
[*]
[url={{ url(]
STATISTIQUES[/url]

@endif
[/list]

@endif
Отображение или скрытие параметров меню зависит от сеанса.
Все данные добавляются в полезную нагрузку во время события LogSuccesfulLogin.< /p>
Итак, если пользователь выходит из системы, а затем входит в систему, у меня нет проблем при внесении некоторых изменений в таблицу пользователей.
Проблема заключается в том, что сеанс активен, и пользователь не выходит из системы. Если я внесу некоторые изменения, представление останется таким же, как и раньше.
В моем пользовательском контроллере происходит следующее:

Код: Выделить всё

$user = User::with('acces')->find($user->id);

$sessions = DB::table('sessions')->where('user_id', $user->id)->get();
foreach ($sessions as $session) {
$payload = unserialize(base64_decode($session->payload));
$payload['oneaction'] = $user->acces->oneaction;
$payload['oneaction_type'] = $user->acces->oneaction_type;
if ($user->acces->oneaction == 'Client') {
$payload['oneaction_clients'] = $user->acces->oneaction_clients;
$payload['oneaction_list'] = $user->acces->oneaction_list;
$payload['oneaction_creator'] = $user->acces->oneaction_creator;
} else {
$payload['oneaction_clients'] = 0;
$payload['oneaction_list'] = 0;
$payload['oneaction_creator'] = 0;
}
//dd($payload);
$payload = base64_encode(serialize($payload));
DB::table('sessions')->where('id', $session->id)->update(['payload' => $payload]);
}

$sessions = DB::table('sessions')->where('user_id', $user->id)->get();
foreach ($sessions as $session) {
$payload = unserialize(base64_decode($session->payload));
//dd($payload);
}
Как видно из приведенного выше кода, существует 2 dd(). Оба показывают мне, что изменения сделаны правильно. Когда я перезагружаю страницу, в левом меню нет никаких изменений.
Я пытался сделать php artisan view:clear сразу после обновления сеансов, но проблема сохраняется.
Единственный способ добиться этой цели — удалить все сеансы пользователя в таблицу. Я не хочу идти этим путем, так чего же мне не хватает? Почему обновление сеанса не работает так, как я ожидал?

Подробнее здесь: https://stackoverflow.com/questions/419 ... g-properly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»