OAuth与自定义用户相结合

时间:2014-06-05 15:48:00

标签: oauth

我有一个网站,用户可以在其中创建帐户并登录。这个网站存储在服务器上的数据库中。我还希望用户能够使用Facebook等登录,从而跳过帐户创建。我不知道如何将它结合起来并使其在数据库中保持持久性。这个用例有什么好的例子吗?

1 个答案:

答案 0 :(得分:1)

让我们首先看看登录的工作原理。当用户第一次登录时,会为用户生成会话ID,并将其作为cookie 存储在用户的浏览器中(请注意,存在没有cookie存储会话ID的机制,但是让我们假设您需要一个简单的cookie)

对于同一网站中其他页面的后续请求,cookie也会一起发送。使用此cookie(具有会话ID),可以识别唯一用户。

因此,在服务器端识别用户(在网络请求时)所需要知道的只是会话ID。

话虽如此,如果你想将facebook等包含在登录机制中,你需要做两件事:

  1. 将您的网站与Facebook连接(您需要一个Facebook开发者帐户和一些密钥。查看here)。当您成功执行此操作时,如果用户选择Facebook登录,您的网站应重定向到Facebook登录页面,一旦用户登录到Facebook帐户,Facebook将使用令牌重定向回您的网站。该令牌表示用户是“真实”用户。如果需要,您可以使用令牌从API facebook获取更多详细信息(例如,Facebook ID,电子邮件地址,姓名等)。
  2. 第二步对于任何身份验证流程都是相同的。您需要生成供服务器使用的会话ID,然后将会话ID保存在cookie中。
  3. 我所指定的是关于如何实现您的要求的一般流程。如何执行此操作的机制将取决于您正在采用的服务器端技术(如ASP.NET,Ruby等)

    此外,如果您的网站需要存储有关用户行为/用户活动的信息,您可能还需要检查通过FB登录的用户是否已存在于您的数据库中。如果不存在,您可以存储用户的脸书ID或其他内容,以便以后唯一标识用户。将此作为主键/用户ID,您可以存储用户活动(例如,如果用户购买产品,则在订单表中插入记录)。