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)
не использующего оповещение внутри этого метода для тестирования, он не будет показывать никакого результата, поэтому лучше поставить какой-либо запрос вставки или что-то подобное для проверки этого метода.