我有以下利用Laravel Passport的代码:
if(Auth::attempt($input, true)) {
return \Auth::user()->createToken(Auth::user()->name, []);
}
因此,当用户每次登录时,Laravel都会反复创建令牌。如果这种情况继续发生,那么数据库肯定会过载。也许我还不了解API Auth的工作原理。
是否有一种方法可以防止Laravel这样做,或者这是预期的结果?
答案 0 :(得分:1)
与常规Web应用程序上下文中的会话保留(登录)状态的情况不同,通常(RESTful)API是无状态的。这意味着一个请求将不必依赖先前发生的请求。请求的所有必要内容,包括身份验证和授权,都应在每个单独的请求中处理。
有关更多详细信息,请参见Cassio Mazzochi Molin的explanation of stateless Restful applications。
亲切的问候,
德拉科
答案 1 :(得分:0)
与网站进行交互的传统过程是您从登录页面登录。接下来,执行所需的操作,然后注销。但是,就REST API而言,过程完全不同。对于RESTful API,传统过程不起作用,因为登录页面上使用的方法没有任何意义。您需要改用api_token。
您需要做的就是在发出请求并对请求进行身份验证之前将api_token附加到查询字符串。
现在Laravel 5.5提供的功能非常有趣!您可以使用Passport library轻松实现此想法。