2012-06-07 26 views
0

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

+2

*我想要一个完整的数据库设计* - SO不是其他人编写代码或设计数据库的地方。如果您向我们展示您尝试过的以及您有哪些问题,我们会帮助您做。 – ThiefMaster

+0

投票结束。当你想让某人为你做所有的工作时,这可能是一个太局限的问题。我们在这里要回答具体问题,但这里的大多数人还希望您参与解决方案流程并自己做一些工作。否则,你将永远学不到任何东西 –

+0

谢谢,我不是那个意思。我有我的数据库设计,但我不确定,我想知道我的用户是否有多个OPENDID,我怎么能匹配他们,更重要的是,我怎么知道他是否([email protected])是他([email protected])。这是我的问题。除了要求用户添加他的OpenID还是没有其他办法? – user539656

回答

1

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

一个例子是如下:

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

你还可以设置一个指数为OpenID的,这样的搜索速度更快,当你将用户登录到应用程序中。还要添加UNIQUE约束,以便对于具有相同openId的用户不存在两行

0

所有您需要的是存储由您使用的任何OpenID库返回的身份URL的列。

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

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用户的限制。这可能不是最好的解决方案,但它可能会帮助你。 祝你好运!

相关问题