2020年3月26日Coding538 字约 4 分钟


Laravel 用户登录记录扩展包

文档

English
中文

自动化测试

Build Status
Scrutinizer Code Quality
Code Coverage
Build Status
Code Intelligence Status
License

功能

  • 记录用户登录信息
  • 分析登录记录

安装

依赖

  • PHP 7.0+
  • Laravel 5.5+

通过 composer 安装:

1
composer require moecasts/laravel-user-login-log

如果你是用 Laravel 的版本 < 5.5,则需要手动将 provide 添加到 config/app.php providers 数组中

1
Moecasts\Laravel\UserLoginLog\UserLoginLogServiceProvider,

发布迁移文件:

1
php artisan vendor:publish --tag=laravel-user-login-log-migrations

如果你想修改默认配置,可以运行下列命令发布配置文件后修改:

1
php artisan vendor:publish --tag=laravel-user-login-log-config

数据表迁移:

1
php artisan migrate

配置

1
2
3
4
5
6
return [
/**
* 缓存时限 (seconds)
*/
'expire' => 300,
];

用法

首先, 添加 LoginLoggable trait 到 authenticatable model.

1
2
3
4
5
6
use Moecasts\Laravel\UserLoginLog\Traits\LoginLoggable;

class User extends Authenticatable
{
use LoginLoggable;
}

然后, 在 app/Http/Kernel.php 中添加中间件,注意:要放在 auth 中间件后面。

1
2
3
4
5
6
7
8
9
10
11
12
// app/Http/Kernel.php

class Kernel extends HttpKernel
{
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
// ...
'login.log' => \Moecasts\Laravel\UserLoginLog\Middleware\UserLoginLogMiddleware::class,
];

// ...
}

最后,在路由中使用:

1
Route::get('hello')->middleware(['auth', 'login.log']);

方法

获取用户登录记录

1
2
$user = new User;
$user->loginLogs;

创建用户登录记录

1
2
$user = new User;
$user->createLoginLog();

当用户重新登录时,创建登录记录

该方法依赖于缓存功能,当新登录时,会创建一个具有时限的缓存,下次请求路由时,来判断是否属于新登录。

实现由 logLogin 方法的 $seconds 参数控制(可留空),默认时限为配置 loginlogs.expire

This function is depet on cache, when your newly login, it will set a cache with for $seconds or default config ( loginlogs.expire ) seconds when $seconds is not set.

1
2
3
$user = new User;
// $user->logLogin($seconds = null)
$user->logLogin();

判断是否为新登录

1
2
$user = new User;
$user->isNewLogin();

Let’s enjoy coding!