【发布时间】:2013-12-08 22:10:53
【问题描述】:
我正在编写新应用程序,这次我想将 HTML/JS 层与 PHP 层完全分开。那是因为我以后会做phonegap版本。
我对身份验证有疑问。这次我不能使用会话变量,所以我必须找出新的身份验证方式。我打算这样试试:
- 用户填写登录表单并通过ajax发送到php文件。
- php 文件检查登录名和密码是否正确,然后为该用户创建一个密钥令牌。将其保存在他身边(例如在 mysql 中)并以 javascript 的形式返回给客户端。
- 浏览器正在接收密钥令牌并将其保存在 session_storage 中。
- 每个 ajax 请求都由这个令牌附加,然后由 php 验证。
这个计划有漏洞吗?也许有更容易/更好的解决方案。它的灵感来自 php 会话的工作方式,但使用密钥令牌而不是会话 ID。请帮帮我。
【问题讨论】:
-
嗯,你的做法应该足够好了。您甚至可以加密令牌并根据您定义的参数(例如外部 ip、存储在数据库中的临时会话 ID 等)在每个请求上验证令牌。
-
您重新发明了会话管理。 “但是使用 key-token 而不是 session id”——“key-token”和 session id 有什么区别?为什么不能将“会话 ID”视为令牌?
-
这是OAuth2的基础。值得您花时间研究在您的后端实施 OAuth2 解决方案,以便您可以执行 Web 应用程序、phonegap,甚至展示您自己的 API。
标签: javascript ajax authentication