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

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

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

Так что мой логин работает.

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

АВТОРИЗОВАТЬСЯ:

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

ВЫЙТИ:

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

Я не уверен, что есть (такие вещи, как) hooks или же Event Listeners, Event Handlers, или что-то типа того.

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

16

Решение

Для почтового входа вы можете сделать это, изменив 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;
11

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

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

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

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

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

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

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

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

3

Почему бы просто не проверить

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

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

1

Ответ Алиф ниже работает нормально, как и ожидалось. Но, как я погуглил, используя Обработчики событий это, вероятно, более предпочтительный способ. (Работает как пользовательские хуки).

Итак, без всякого уважения к ответу Алиф ниже, позвольте мне выбрать -> этот подход к событиям Я только что узнал.

Спасибо всем с уважением!

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