0

我想为我的登录系统使用 janrain,一切准备就绪,但我不知道如何构建我的数据库?使用 openID 的数据库设计是什么?特别是当一些用户有一些不同的提供者时,我怎么知道他们是谁?他们是新用户还是旧用户?我想要一个完整的数据库设计

4

3 回答 3

1

在存储用户信息的表中为 openId 添加一列。

一个例子如下:

create table users (
first_name varchar(50),
last_name varchar(50),
email_address varchar(100),
openId varchar(150));

您还可以为 openId 设置索引,以便在将用户登录到应用程序时搜索更快。还要添加 UNIQUE 约束,以便具有相同 openId 的用户不存在两行

于 2012-06-07T08:40:25.400 回答
0

您所需要的只是一个用于存储您使用的任何 OpenID 库返回的身份 URL 的列。

您可以考虑将其放在一个单独的表中,该表只有identityuserid列,以便用户可以将多个 openid 分配给他的帐户。

于 2012-06-07T08:41:15.053 回答
0

我会建议你做一些我在我的应用程序中所做的事情。我在用户表中有一个布尔列。如果用户使用 openID,则为 1,否则为 0。另一个表是 opneID 表,它具有提供者和在他们使用开放 ID 时提供给他们的密钥。因此,您将有以下三种情况:

  1. 用户已经登录并想在下次登录时添加 openID。
  2. 用户已经注册但想在下次登录时使用 openID。
  3. 用户未注册并希望使用 OpenID 登录。

这就是我所做的:

  1. 详细信息已存储,因此查找当前登录用户并将 openID 布尔值设置为 true 并添加他将提供的 openID 详细信息。

  2. 当他点击 openID 时,询问他是否已经注册,是否要求提供电子邮件 ID 和密码,然后使用 openID 详细信息。

  3. (这是最难的部分)将 openID 设为布尔值 1 并添加 OpenID 的详细信息,然后给他一个表单,该表单只询问适合您的应用程序的重要细节。根据您的应用程序的规模,您可能不需要第二种形式。我正在开发的应用程序需要用户提供额外的信息。如果您想跳过第二步,您可以查看 Facebook API 提供的一些选项,以检索 first_name last_name 等详细信息并保存。

因此,当用户登录时,检查 OpenID 布尔值是否设置为 0 或 1 如果设置为 1,则使用您可能已通过正确连接保存的相应 OpenID 详细信息。

我发现的最困难的部分是第三步,我不应该以某种方式从使用 OpenID 的用户那里获取任何密码。这违反了数据库约束。我无法取消限制,因为这会给其他想要注册的用户带来问题。所以我不得不以某种方式规避 openID 用户的限制。它可能不是最好的解决方案,但它可能会对您有所帮助。祝你好运!!

于 2012-06-07T23:40:28.927 回答