为什么laravel在每个请求上创建令牌?

时间:2018-10-05 06:39:24

标签: php laravel api authentication token

我有以下利用Laravel Passport的代码:

if(Auth::attempt($input, true)) {
    return \Auth::user()->createToken(Auth::user()->name, []);
}

因此,当用户每次登录时,Laravel都会反复创建令牌。如果这种情况继续发生,那么数据库肯定会过载。也许我还不了解API Auth的工作原理。

是否有一种方法可以防止Laravel这样做,或者这是预期的结果?

2 个答案:

答案 0 :(得分:1)

与常规Web应用程序上下文中的会话保留(登录)状态的情况不同,通常(RESTful)API是无状态的。这意味着一个请求将不必依赖先前发生的请求。请求的所有必要内容,包括身份验证和授权,都应在每个单独的请求中处理。

有关更多详细信息,请参见Cassio Mazzochi Molinexplanation of stateless Restful applications

亲切的问候,

德拉科

答案 1 :(得分:0)

与网站进行交互的传统过程是您从登录页面登录。接下来,执行所需的操作,然后注销。但是,就REST API而言,过程完全不同。对于RESTful API,传统过程不起作用,因为登录页面上使用的方法没有任何意义。您需要改用api_token。

您需要做的就是在发出请求并对请求进行身份验证之前将api_token附加到查询字符串。

现在Laravel 5.5提供的功能非常有趣!您可以使用Passport library轻松实现此想法。