gpt4 book ai didi

laravel-5 - TokenGuard 中的一个不必要的 select 语句

转载 作者:行者123 更新时间:2023-12-02 11:29:54 25 4
gpt4 key购买 nike

我在 Laravel 5.4 中通过 JQuery 使用 TokenGuard 处理所有与数据库相关的请求

用户登录后...我将使用以下方法获取用户个人资料。

public function ViewProfile() {
$user = \Auth::guard("api")->user();
$Data = [
"FirstName" => $user->FirstName,
"LastName" => $user->LastName
];
return \Response::json([
'Status' => true,
'Data' => $Data,
], 200);
}

下面是发送到服务器以使用上述方法获取数据的 POST 方法 Url

http://localhost:1234/public/api/v1/apiviewprofile?api_token=598bbba095bdd1598bbba095bf1

当我打印在获取用户详细信息时发出的 select 语句时...我看到下面有两个 select 语句。

[2017-08-10 02:37:05] local.INFO: select * from `tbluser` where `UserID` = ? limit 1  
[2017-08-10 02:37:05] local.INFO: select * from `tbluser` where `api_token` = ? limit 1

问题

我可以理解,当我使用 TokenGuard 发送 POST 请求时...它首先验证 token ...以便此时它进入数据库。所以第二个 select 语句就可以了。但是,Laravel 5.4 在哪里使用第一个 select 语句?

最佳答案

第二条语句确实在您对从 Auth::guard() 返回的守卫调用 ->user() 之后运行,在守卫包含的 UserProvider 内。实现。

您提供的代码不太可能触发第一条语句。我怀疑这与您使用 ViewProfile() 操作在路由上使用的某些中间件有关。

也许在您成功验证用户身份之后,甚至在重定向到该路由之前就执行了查询? (第一个查询正是用户身份验证查询)。

重定向可以在不到一秒的时间内完成,并且由于日志以 1 秒的精度显示时间,因此无法判断两者之间到底有多少时间。除非您确定根本没有发生重定向,否则很难判断这两个查询是否在同一个 Laravel 容器生命周期内执行。

关于laravel-5 - TokenGuard 中的一个不必要的 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45603585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com