php - 如何获取当前用户登录 Laravel 的时间?
问题描述
我正在使用Laravel 身份验证。如何获取当前用户登录的时间?我想计算自当前用户登录以来经过的秒数。如果有办法在不使用Events的情况下实现它,那就太好了。
解决方案
这可以通过覆盖以下AuthenticatesUsers
特征中的一种方法来完成Auth/LoginController
:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
$user->authenticated_at = Carbon::now();
$user->save();
return redirect()->intended($this->redirectPath());
}
}
然后识别用户模型上的日期字段:
...
class User extends Authenticatable
{
use Notifiable;
protected $dates = ['authenticated_at'];
...
当然,将其添加到 users 表的 /a 迁移文件中:
$table->timestamp('authenticated_at')->nullable();
还有一个可能的片段,您可以使用它来获取“正常运行时间” $user->uptime
:(添加到用户模型)
public function getUptimeAttribute(): int
{
return Carbon::now()->diffInSeconds($this->getAttribute('authenticated_at'));
}
推荐阅读
- python - 如何在一个图中将python中的曲面和颤动图结合起来
- javascript - 开始滚动动画,它到达该部分
- r - 如何从 R jupyter notebook 将文件导出到电脑?
- android - 检测屏幕是否由于本地化更改而被镜像 Android
- apache2 - 尝试连接到新环境时出现 503 错误
- python - 有什么方法可以显示 .py 文件的图标吗?
- mysql - Laravel 在 whereHas 中的多个 where 子句约束 hasMany 关系
- php - PHP使用变量创建MySQL数据库
- ansible - 如何使用 Ansible Dynamic Inventory for AWS 显示标签名称?
- php - 在图片中添加版权网址