Openid注册表流程指南

时间:2010-12-30 16:29:36

标签: asp.net-mvc openid dotnetopenauth

我想在我的网站登录中使用OpenId,但是对于注册,我的网站需要其他信息(用户名和电子邮件地址等)并不总是从OpenId提供商返回。在我看来,我有两个主要选择:

(1)预先询问OpenId网址,通过OpenId提供商重定向并验证,然后返回我的网站并输入其他信息。这允许我预先填充第二个表单,如果信息是从OpenId提供者返回的,这是一个加号,但否定包括存储提供者**返回的标识符的位置,以及具有多阶段注册过程,这可能是令人反感的

(2)单个表单,显示我需要的所有信息,包括OpenId提供程序Url。在提交时,将信息保存在db中,重定向到OpenId,验证并从提供程序返回时,更新db记录以包含标识符。这更简单,但意味着我从不使用OpenId提供程序返回的任何额外信息,因为在验证之前填写了表单。

我真的只关注最佳方法的一些想法/想法?我正在使用DotNetOpenAuth与ASP.NET MVC 3,如果这有任何区别。

**这是秘密,无法发送到客户端,因此必须保存在服务器上。无法放入注册数据库表,因为在此阶段我没有任何其他非空字段。不允许使用会话,那么我该把它放在哪里?

2 个答案:

答案 0 :(得分:1)

充分利用这两个世界!

查看this sample,它演示了只有一个表格同时包含OpenID和电子邮件地址(您可以想象任意数量的其他字段)。输入标识符(第一个)后,当用户输入更多详细信息时,您的站点会立即在后台开始OpenID发现过程。对于新用户,这可能不会导致带有详细信息的完整登录,因此用户单击按钮继续进行身份验证,完成后将填写OP自动提供的详细信息。然后,用户可以根据需要更改它们,最后单击“立即创建帐户”按钮。

答案 1 :(得分:0)

我自己经历过这个,我选择了选项(1) - 进行OpenId舞蹈,获取提供者提供的任何字段,然后要求用户填写空白。

是的,这是多个步骤,但我认为总体而言,用户的工作量较少;他们不需要输入他们的OpenId提供商可能提供的信息。