I am building an app to better understand Restful back-ends with clients that makes calls to it. I am using slim to handle routing and service calls. I am stuck on two things though.
Part 1 - If restful APIs should not use sessions how do I keep information like authenticated and user_id available? It was my understanding storing that information in a cookie was a bad practice. Once a user authenticated normally I would use $_SESSION['uid']
.
Part 2 - This part is more confusing to me. I am using Twig for front-end (not a cool js guy). Doing so all on the same server I use slim-view to render twig. But that means my back-end is not sending JSON it is doing everything. How is something like this separated? Is it worth while?
答案 0 :(得分:1)
第一部分
一种方法是创建一个临时的动态API密钥,使用此临时密钥,您可以对来自客户端的任何请求进行身份验证和授权。
在服务器端,您可以将此临时API密钥存储在一个表中,其中包含一些字段,以便在上次使用密钥时以及密钥有效期间跟踪。通过这样做,您可以在服务器端使API密钥无效
客户端可以将密钥存储在任何地方,但如果您要使用PHP
,我建议将其存储在session
旁注:此答案基于我所使用的API。表static
中的字段api_key
用于仅可用于登录用户并获取随后用于身份验证和授权的动态密钥的密钥。
这是因为我们的客户端是用JS编写的,static
API密钥在源代码中是清晰可见的。
因此,客户首先必须发出登录请求才能获得合法的" api key
第2部分
您需要将客户端项目与服务器项目分离。您的客户端应该只从服务器接收数据(例如JSON),您的服务器永远不应该担心如何仅将数据发送给客户端。
客户端可以用任何语言编写,甚至可以托管在其他地方。客户唯一能做的就是直接联系数据库。它必须直接从服务器请求每条信息