与 slim restful 后端和 twig 的两部分混淆

2-part confusion with slim restful backend and twig

我正在构建一个应用程序以更好地理解 Restful 后端调用它的客户端。我正在使用 slim 来处理路由和服务调用。不过,我坚持两件事。

第 1 部分 - 如果 restful API 不应使用会话,我如何保持已验证和 user_id 等信息可用?我的理解是将这些信息存储在 cookie 中是一种不好的做法。一旦用户正常通过身份验证,我将使用 $_SESSION['uid'].

第 2 部分 - 这部分让我比较困惑。我在前端使用 Twig(不是一个很酷的 js 人)。在同一台服务器上执行所有这些操作,我使用 slim-view 来渲染树枝。但这意味着我的后端没有发送 JSON 它正在做所有事情。这样的东西怎么分开?值得吗?

第一部分

一种方法是创建一个临时的动态 API 密钥,然后使用此临时密钥您可以验证和授权来自客户端的任何请求。

在服务器端,您可以将此临时 API 密钥存储在 table 中,其中包含一些字段以跟踪上次使用密钥的时间以及密钥的有效期。通过这样做,您可以使服务器端的 API 密钥无效

客户端可以将密钥存储在任何地方,但如果您要使用 PHP,那么我建议将其存储在 session


旁注: 这个答案是基于我研究过的 API。 tableapi_key中的字段static用于密钥,只能用于登录用户并获取动态密钥,然后用于身份验证和授权。

这是因为我们的客户端是用 JS 编写的,并且 static API 键在源代码中是显而易见的。 所以客户端在获得"legit" api key

之前首先必须发出登录请求

第 2 部分

您需要将客户端项目与服务器项目分离。您的客户端应该只从服务器接收数据(例如 JSON),您的服务器永远不应该担心如何只将数据发送给客户端。

客户端可以用任何语言编写,甚至可以托管在其他地方。客户端唯一不能做的就是直接联系数据库。它必须直接从服务器请求每条信息