Laravel 5.2: Сделайте что-то после входа пользователя в систему?

(Я новичок в Laravel)

Я использую Laravel 5.2. Я успешно включил проверку подлинности; выполнив php artisan make:auth и прочее.

Итак, мой логин работает.

Теперь мне нужно что-то сделать, как только кто-то вошел в систему. Для простого примера:

ВХОД:

  • Как только пользователь выполнил вход в систему, введите значение в сеанс.
  • Например: $request->session()->put('UserAgent', $ClientUserAgent);

LOGOUT:

  • То же самое делать, как только пользователь вышел из системы, удалите пользовательское значение сеанса.
  • Например: $request->session()->forget('UserAgent');

Я не уверен, есть ли (например) hooks или Event Listeners, Event Handlers или что-то в этом роде.

Как я могу это сделать?

Ответ 1

Alief Answer ниже работает нормально, как ожидалось. Но по мере того, как я googled через, использование Обработчики событий, вероятно, является более предпочтительным способом. (Он работает как пользовательские крючки).

Итак, без каких-либо меньших уважений к Alief Answer, ниже, позвольте мне выбрать → этот подход к использованию событий, который я только что узнал.

Спасибо всем!

Ответ 2

Для входа в систему вы можете сделать это, изменив App/Http/Controllers/Auth/AuthController.php

Добавьте аутентифицированный() в этот класс, чтобы переопределить значение по умолчанию:

protected function authenticated(Request $request, User $user){
   //put your thing in here

   return redirect()->intended($this->redirectPath());
}

Также включите это в класс:

 use Illuminate\Http\Request;

Чтобы выйти из системы, добавьте эту функцию в один класс:

protected function getLogout()
{
    Auth::logout();

    //do something here

    return redirect('/');
}

И также включите это в класс:

use Auth;

Ответ 3

Для более новых версий Laravel

Если вы делаете только что-то очень простое, то создание обработчика событий кажется излишним для меня. Для этой цели у Laravel есть пустой метод, включенный в класс AuthenticatesUsers.

Просто разместите следующий метод внутри app\Http\Controllers\LoginController (переопределив его):

protected function authenticated(Request $request, $user)
{
    // stuff to do after user logs in
}

Ответ 4

Вы можете попробовать настроить прослушиватели событий для активированных событий Auth.

Вы можете настроить прослушиватель, который прослушивает Illuminate\Auth\Events\Login, чтобы обрабатывать то, что вам нужно для входа в систему, и Illuminate\Auth\Events\Logout для выхода после выхода.

Laravel Docs - Аутентификация - События

Ответ 5

Почему не простая проверка на

if(Auth::check()){
    //your code
}

Убедитесь, что вы включили use Auth;

Ответ 6

Если вы проводите тестирование с использованием метода authenticated(Request $request, User $user) не использующего оповещение внутри этого метода для тестирования, он не будет показывать никакого результата, поэтому лучше поставить какой-либо запрос вставки или что-то подобное для проверки этого метода.