那么,你在表单中输入用户名和密码,点击“确定”按钮。然后将数据发送到服务器端并检查用户数据库是否存在该用户。然后它返回用户ID。接下来呢? 该数据保存在cookie中? 这是否意味着,每次点击链接,网站再次登录到网站?登录如何工作?
我的意思是,
- 你点击一些网站链接
- 浏览器重定向你到该页面
- 现场检查你的cookies,从饼干
- 现场检查
- 网站抓取的用户名和密码数据是否有效(通过连接到数据库)
- 向您显示页面
这是正确的吗?
那么,你在表单中输入用户名和密码,点击“确定”按钮。然后将数据发送到服务器端并检查用户数据库是否存在该用户。然后它返回用户ID。接下来呢? 该数据保存在cookie中? 这是否意味着,每次点击链接,网站再次登录到网站?登录如何工作?
我的意思是,
这是正确的吗?
你应该使用会话,但这几乎是它的要点。这样数据不会意外地持续存在。
我的意思是,对于我在家里的简单网站,我就是这么做的。但它仍然在本地托管,所以安全性保证是废话。
哦,并且无需每次点击另一个链接时都检查数据库 - 浪费了太多时间。
为什么会议,但不是饼干? Cookie有过期日期,并且每次关闭浏览器时都不会删除。 – nukl
Cookie可能被欺骗。这个问题可以被克服,但它需要更多的工作。 –
Tadaa !! :)
UPDATE
要添加更多一点......
您不需要在会话中存储用户密码。事实上,它非常灰心。检查以确保用户对象存在于会话中就足够了。
当用户点击注销页面,然后继续使会话无效......就是这样。 :)
几乎正确。每次请求都很少进入数据库。您通常设置一个有效期限的cookie,并将用户会话和信息保存在内存中。因此,每次发出请求时,如果用户未通过身份验证,则会对其进行身份验证,并生成并向他发送cookie,例如5小时到期。因此,在接下来的5个小时内,无论何时请求使用该cookie,您都会相信该用户是经过身份验证的有效用户,您不必检查数据库。
这不是每个网站如何去做,也不是管理会话和cookie的唯一方式,但我认为它是使用最广泛的。
通常,应用程序利用浏览器和Web服务器之间建立的会话,并记下该会话是“已认证”的。 “会话”是HTTP的内置功能。如果浏览器关闭,或经过一段时间后,会话将自动关闭。如果用户进行明确的注销,则应用程序会将该会话标记为未通过身份验证。
并不是每个网页和/或网络服务器都以相同的方式工作,所以如果不知道你在说什么网站就不可能回答你的问题。 – JohnFx