我是Laravel 4框架和PHP的初学者。
目前,我正在尝试在客户端应用程序和服务器之间进行简单的身份验证过程。
以下是我计划的方法:
客户端使用用户名和密码通过GET请求登录服务器。
如果成功,服务器将验证并返回令牌字符串。令牌字符串将使用用户名,密码和到期时间进行编码(散列?)。
客户提交请求,包括给定的令牌。服务器将验证令牌(解码它 - >检查用户名/密码和过期时间)。如果成功,它将处理客户的请求。
使用上面给出的参数生成令牌的最佳方法是什么,并在服务器端对其进行解码?
谢谢,感谢您的时间和帮助。
答案 0 :(得分:11)
我不认为存储以某种令牌编码的用户名和密码是个好主意。而是在成功登录后生成随机令牌,并在服务器端存储与令牌相关的数据。
您可以将有关每次登录的记录存储到包含token
,user_id
,valid_until
列的某个表格中。
在每次请求之后,在数据库中查找令牌,检查它是否仍然有效并使用user_id
进行身份验证。
您可以将令牌视为一次性用户和密码,例如将令牌的前8个字符视为临时用户名,其余为密码,如果您对允许无密码访问感到不安:)
此外,您可能希望运行一些cron作业,以便每天从数据库中删除过期的记录。
答案 1 :(得分:1)
您可以使用JWT JSON Web令牌进行身份验证,以完全消除会话和Cookie。 Facebook使用类似的方法。一旦你使用电子邮件和pwd登录,你就会获得一个Web令牌,所以即使它被黑了,你也无法从中获取密码。您可以设置时间限制以使令牌过期。