2011-02-10 42 views
2

那么,你在表单中输入用户名和密码,点击“确定”按钮。然后将数据发送到服务器端并检查用户数据库是否存在该用户。然后它返回用户ID。接下来呢? 该数据保存在cookie中? 这是否意味着,每次点击链接,网站再次登录到网站?登录如何工作?

我的意思是,

  1. 你点击一些网站链接
  2. 浏览器重定向你到该页面
  3. 现场检查你的cookies,从饼干
  4. 现场检查
  5. 网站抓取的用户名和密码数据是否有效(通过连接到数据库)
  6. 向您显示页面

这是正确的吗?

+0

并不是每个网页和/或网络服务器都以相同的方式工作,所以如果不知道你在说什么网站就不可能回答你的问题。 – JohnFx

回答

0

你应该使用会话,但这几乎是它的要点。这样数据不会意外地持续存在。

我的意思是,对于我在家里的简单网站,我就是这么做的。但它仍然在本地托管,所以安全性保证是废话。

哦,并且无需每次点击另一个链接时都检查数据库 - 浪费了太多时间。

+0

为什么会议,但不是饼干? Cookie有过期日期,并且每次关闭浏览器时都不会删除。 – nukl

+0

Cookie可能被欺骗。这个问题可以被克服,但它需要更多的工作。 –

5
  1. 用户输入凭证。
  2. 系统验证凭证。
  3. 验证成功后,服务器将用户对象保存到会话中。
  4. 系统从会话中抓取用户信息。
  5. 系统显示网页。

Tadaa !! :)

UPDATE

要添加更多一点......

  1. 用户访问受保护的网页。
  2. 系统检查会话是否包含用户对象。
  3. 如果用户对象存在于会话中,则允许用户通过访问该页面。
  4. 如果用户对象不存在,将用户重定向到登录页面。

您不需要在会话中存储用户密码。事实上,它非常灰心。检查以确保用户对象存在于会话中就足够了。

当用户点击注销页面,然后继续使会话无效......就是这样。 :)

+0

我应该在会话中存储什么? – nukl

+0

会话应该包含用户对象(用户名,名字,桅杆名称,所有您需要的相关信息)。这样,当您需要个性化您的网站时,您可以通过从会话中拉出名字来显示“Hello Mike”。将用户信息放在会话中最直接,您无需担心用户禁用Cookie。此外,如果您使用会话,当用户关闭浏览器时,会自动终止会话,而如果您使用cookie,则可能需要执行进一步检查。 – limc

3

几乎正确。每次请求都很少进入数据库。您通常设置一个有效期限的cookie,并将用户会话和信息保存在内存中。因此,每次发出请求时,如果用户未通过身份验证,则会对其进行身份验证,并生成并向他发送cookie,例如5小时到期。因此,在接下来的5个小时内,无论何时请求使用该cookie,您都会相信该用户是经过身份验证的有效用户,您不必检查数据库。

这不是每个网站如何去做,也不是管理会话和cookie的唯一方式,但我认为它是使用最广泛的。

+0

但我究竟应该存储在饼干中?用户名和解密密码?但是我怎么能信任这个数据,而不用检查用户数据库? – nukl

+0

为什么你需要他的密码?您应该只存储您需要的关于用户的信息以显示页面。通常这是用户名,用户ID,一些配置文件信息等等。除非你使用SSL通信,否则你绝对不能100%信任数据是正确的。有人可以“嗅探”连接并窃取用户的cookie(这被称为会话劫持)。如果它让你感觉更安全,即使Facebook浏览未加密的cookie。 – Piva

0

通常,应用程序利用浏览器和Web服务器之间建立的会话,并记下该会话是“已认证”的。 “会话”是HTTP的内置功能。如果浏览器关闭,或经过一段时间后,会话将自动关闭。如果用户进行明确的注销,则应用程序会将该会话标记​​为未通过身份验证。