如何在PHP中管理从移动应用程序登录的用户的会话?

2022-08-30 11:26:44

我是一名PHP程序员。所以,我对iOS和Android编码一无所知。

场景是有一个使用社交网络PHP软件开发的网站,名为“PHPFox”。

现在有两个类似的移动应用程序,它们完全复制了本网站的功能。一个移动应用程序在iOS中,另一个在Android中。

因此,我编写了一组RESTful API,其中我接受来自移动应用程序的请求,解析请求,将请求参数传递给为网站执行相同工作的函数,从该函数获取响应,将其转换为JSON格式并将其发送回移动应用程序。对于iOS和Android应用程序,我使用相同的REST API文件集。

当用户登录时,将调用用于登录的 REST API。最终,用于身份验证的 PHPFox 函数被调用,一个安全令牌与其他一些用户数据一起生成。每次登录时,PHPFox 都会生成不同的安全令牌。此数据将设置到会话中。现在,每次我通过任何REST API文件调用任何函数时,都会验证登录时生成的安全令牌,并且只有在成功验证令牌后,才会调用PHPFox函数。此验证过程由 PHPFox 在内部完成。因此,无需将安全令牌显式或隐式传递给任何 REST API 调用。

到目前为止,一切都很好。

我的怀疑从这里开始。我不知道会话是否在iOS / Android应用程序中维护。那么,如果服务器上的会话(即PHPFox)超时,那么应用程序会发生什么?它会崩溃吗?用户是否必须再次登录?如果用户在设备上杀死了应用程序并再次访问该应用程序,他/她是否必须再次执行登录过程?

我心中有太多的疑惑。我对这些事情完全感到困惑。

有人可以把更多的注意力放在我面临的问题上吗?如果你能详细解释,那真是太好了。

谢谢。


答案 1

REST本质上是无会话的。您需要在用户登录时生成令牌。您必须在移动式客户机上保存此令牌。对于每个请求,您需要在请求标头中附加一个有效的令牌,并在服务器端进行检查。如果令牌过期,则存储在客户端上的令牌无效。因此,由于401响应,您需要再次登录。如果令牌不正确,则需要响应400。我希望我对你有所帮助。


答案 2

与网络浏览器不同,iOS和Android应用程序无法维护会话。通常,一旦用户登录(从服务器验证的登录凭据),其登录凭据将保存在客户端。然后,应用使用无会话 REST API 调用从服务器获取数据。这就是在移动应用程序中主要完成的方式。

但是,如果您希望服务器会话和移动应用程序齐头并进(我认为这不是一个好主意),那么方法是

1) 当用户登录时,将在服务器端生成一个安全令牌,并保存在服务器端和客户端。

2)只要安全令牌有效,移动应用程序将能够与服务器通信。

3) 会话过期时,安全令牌将变为无效。现在,服务器和客户端之间必须了解会话过期时的响应。现在,移动应用程序必须再次将用户重定向到登录页面。用户将再次登录,然后与服务器通信。每次会话过期时都应发生这种情况。


推荐