Как сохранить время последнего входа пользователя и IP-адрес

Ромчик
0

laravelДоброго времени суток. В одном из проектов мне необходимо было вести лог активности пользователя. Логирование практически любого действия (время, ip адрес и само действие). В этом нет ничего сложного. Давайте я расскажу, как это сделать и немного упростим задачу. Будем ввести лог только для аутентификации (записывать дату и ip адрес). И все это дело будем писать в стандартный лог файл.

Как устанавливать Laravel я не буду рассказывать, это можно прочитать в официальной документации или кто не очень дружит с английским языком можно прочитать в переведенной документации. Теперь давайте сделаем первоначальные настройки.

Настройка проекта на Laravel

Мы настроим подключение к базе данных и логирование. Для этого откроем файл .env, который расположен в корне нашего проекта и изменим настройки. (База данных у меня называется lara, логин – homestead, пароль – secret)


DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=lara

DB_USERNAME=homestead

DB_PASSWORD=secret

Теперь настроим логирование так, чтобы логи писались по дням: laravel-<дата формирования лога>.log


LOG_CHANNEL= daily

Отлично. На этом настройка завершена. Теперь переходим к созданию аутентификации в нашем приложении.

Аутентификация в Laravel

Тут вообще проще простого. Laravel из коробки поддерживает аутентификацию. Нам необходимо ввести две команды:


php artisan make:auth

И вторая команда:


php artisan migrate

Первая команда создает контроллеры аутентификации, регистрации, сброса пароля и напоминание пароля, виды и роуты. А вторая выполняет миграцию, при выполнении которой буду созданы две таблицы (в одной хранятся email, пароли и др. данные о пользователя, а вторая необходима для хранения данных при восстановлении пароля).

Теперь если мы перейдем на наш сайт, то увидим ссылки: на страницу авторизации и на страницу регистрации.

Давайте пройдем регистрацию, а потом авторизацию.

Регистрация и авторизация в Laravel

Проходим по ссылке Register и вводим все необходимые данные. И при успешной регистрации нас сразу перенаправит на защищенную страницу

Отлично. Теперь давайте разлогинемся и снова залогинемся. Все работает.

Вот мы и подошли к самому интересному.

Запись даты и ip адрес в лог при авторизации.

В AuthenticatesUsers есть метод  authenticated(Request $request, $user), который выполняется, когда пользователь проходит аутентификацию. Поэтому в своем контроллере Auth\LoginController мы можем переопределить его, добавив код в конец нашего контроллера


public function authenticated(Request $request)

{

Log::info('Пользователь прошел авторизацию '.Carbon::now()->toDateString().' с ip адреса: '.$request->getClientIp());

}

И не забываем прописать:


use Illuminate\Support\Facades\Log;

use Carbon\Carbon;

use Illuminate\Http\Request;

Тут мы использовали фасад Log для записи данных в файл логов. Для работы с датой мы использовали Carbon. Как работать с датой и временем с помощью carbon вы можете прочитать в статье «Работа с датой и временем в Laravel и PHP с помощью Carbon».

Давайте проверим, что у нас получилось. Залогинимся в нашем приложении и посмотрим лог, который находится в storage\logs

И в самом логе будет следующее:

Как видите все работает.

Заключение.

Мы с вами сделали логирование при авторизации пользователя. Правда записываем дату и ip адрес в файл, что не очень правильно (хотя… смотря для чего).

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2018 По всем вопросам обращайтесь через форму обратной связи

Яндекс.Метрика