Как добавить переменную в Auth :: user (), а затем сохранить ее и кэшировать? - PullRequest
0 голосов
/ 09 июня 2018

У меня следующая проблема: После авторизации пользователя с провайдером Auth Passport в Laravel я получаю Auth::user().Затем я пытаюсь добавить к нему переменную.

 $role = Input::get('role');
 $user = Auth::user();
 $user->role = $role;
 Auth::setUser($user);`

Это хорошо работает, если использовать новую переменную $user в текущем контроллере и маршруте, но если я пытаюсь получить Auth::user() по другому маршруту, она возвращает старыйценности.Как добавить переменную к Auth::user(), а затем сохранить ее и кэшировать?Я хочу изменить Auth::user() с помощью метода setUser, а затем кэшировать его для использования на всех других маршрутах.Как я могу решить мою проблему?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Для этого вы можете использовать команду добавления в модели пользователя,

, например,

protected $appends = [ 'my_role' => 1];
0 голосов
/ 09 июня 2018

Причина, по которой Auth::user() возвращает вам старое значение в других местах, заключается в том, что Auth::user() - это система аутентификации, которая проверяет учетные данные пользователя и затем сравнивает их с User model (он же аутентификация по умолчанию)

С помощью setUser вы просто устанавливаете некоторые свойства при создании экземпляра, поэтому в других местах вы получаете старое значение, которое извлекается из User model, как в других местах, когда setUser сбрасывается.

...