Laravel — Добавить авторизованному пользователю только для текущего сеанса

Я хочу добавить значение для пользователя авторизации

auth()->user() OR Auth::user()

Только для тех, кто в данный момент вошел в сеанс. (т.е. они выходят из системы или истекает сеанс аутентификации, и значение теряется).

Auth::user()->isTheOne = true;

Приведенный выше код будет работать только для текущего запроса и не будет сохраняться при последующих запросах. Как я могу этого добиться. Так что, когда я пытаюсь получить доступ к вышеуказанному коду из другого запроса с тем же пользователем, он не будет показывать ноль?

2

Решение

Если вы хотите сохранить данные во время сеанса, вы должны изучить использование сеансов, которые предоставляет Laravel. Простой пример будет

// Via a request instance...
$request->session()->put('key', 'value');

// Via the global helper...
session(['key' => 'value']);

Для получения дополнительной информации о сессиях и Laravel прочитайте документацию здесь.

1

Другие решения

Вы можете добавить isTheOne функция в классе вашего пользователя:

public function isTheOne() {
session(['is_the_one' => true]);
}

Затем вызовите ваш метод в контроллере или где-то еще:

Auth::user()->isTheOne();

РЕДАКТИРОВАТЬ

Согласно вашему комментарию, если вы хотите что-то более общее, вы можете попробовать:

public function __set($key, $value) {
session([$key => true]);
parent::__set($key, $value);
}

Так что каждый раз, когда вы звоните Auth::user()->isTheOne = true; или что-то в этом роде, это будет запись в сеанс. Это кажется мне странным, но если это то, что вы хотите, хорошо (может быть, я что-то не так понял).

1

Я думаю, что вы можете просто установить сеанс,

public function postUpdate(Request $request) {

if ($request->session()->has('user') {
$user = $request->session()->get('user');

} else {

$user = Auth::user();
$user->isTheOne = true;
$request->session()->put('user', $user);

}}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector