Как установить переменную сеанса при входе пользователя в Laravel

Разработка приложения для выставления счетов продолжается с использованием Laravel. Я сохраняю формат даты и суммы для каждого пользователя в settings Таблица.

Когда пользователь входит в свою учетную запись, как установить Session переменная? Пожалуйста, дайте какие-либо предложения. Я использую Laravel 5.3.

2

Решение

Конечно, документы говорят нам, как хранить данные сеанса*, но они не отвечают на вопрос ОП относительно хранения данных сеанса при входе. У вас есть пара вариантов, но я думаю, что самый простой способ — переопределить метод проверки подлинности черты 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.

9

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

Я использовал класс Auth для управления пользовательскими данными, например так:

public function index(){
$user_id = Auth::user()->id;
}

Но вы должны добавить «использовать аутентификацию»; до объявления класса. Затем вы можете добавить любые данные в переменную сеанса.

2

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

Запросить экземпляр

public function methodA(Request $request) {
$request->session()->put('KEY', 'VALUE');
}

Глобальный Помощник

public function methodB() {
session(['key' => 'value']);
}

Вы можете найти более подробную информацию об обоих методах в документация.

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