Разработка приложения для выставления счетов продолжается с использованием Laravel. Я сохраняю формат даты и суммы для каждого пользователя в settings
Таблица.
Когда пользователь входит в свою учетную запись, как установить Session
переменная? Пожалуйста, дайте какие-либо предложения. Я использую Laravel 5.3.
Конечно, документы говорят нам, как хранить данные сеанса*, но они не отвечают на вопрос ОП относительно хранения данных сеанса при входе. У вас есть пара вариантов, но я думаю, что самый простой способ — переопределить метод проверки подлинности черты AuthenticatesUsers.
Добавьте переопределение к вашему LoginController:
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
$this->setUserSession($user);
}
Тогда вы можете настроить свою сессию как:
protected function setUserSession($user)
{
session(
[
'last_invoiced_at' => $user->settings->last_invoiced_at,
'total_amount_due' => $user->settings->total_amount_due
]
);
}
Если вы хотите быть немного умнее, вы можете создать прослушиватель для событий Login или Authenticated и настроить сеанс, когда один из них События* пожары.
Создайте прослушиватель, такой как SetUpUserSession:
<?php
namespace app\Listeners;
use Illuminate\Auth\Events\Login;
class SetUserSession
{
/**
* @param Login $event
* @return void
*/
public function handle(Login $event)
{
session(
[
'last_invoiced_at' => $event->user->settings->last_invoiced_at,
'total_amount_due' => $event->user->settings->total_amount_due
]
);
}
}
* Ссылки идут на 5.4, но это не изменилось с 5.3.
Я использовал класс Auth для управления пользовательскими данными, например так:
public function index(){
$user_id = Auth::user()->id;
}
Но вы должны добавить «использовать аутентификацию»; до объявления класса. Затем вы можете добавить любые данные в переменную сеанса.
Вы можете хранить данные в сеансе, используя два разных метода: либо экземпляр Request, либо используя предоставленный глобальный помощник / функцию.
Запросить экземпляр
public function methodA(Request $request) {
$request->session()->put('KEY', 'VALUE');
}
Глобальный Помощник
public function methodB() {
session(['key' => 'value']);
}
Вы можете найти более подробную информацию об обоих методах в документация.