我想使用OpenId登录我的站点,但是为了注册,我的站点需要额外的信息(用户名和电子邮件地址等),这些信息并不总是从OpenId提供商那里返回。在我看来,我有两个主要的选择:
(1)首先,请求OpenId url,通过OpenId提供商进行重定向和验证,然后返回我的网站并输入其他信息。这允许我预先填充第二个表单,如果信息是从OpenId提供程序返回的,这是一个优点,但缺点包括在哪里存储由提供程序返回的标识符**,以及具有可能令人讨厌的多阶段注册过程。
(2)一个表单,它显示我需要的所有信息,包括OpenId提供者的网址。提交时,将信息保存在数据库中,重定向到OpenId,验证,并在从提供程序返回时,更新数据库记录以包括标识符。这比较简单,但这意味着我永远不会使用OpenId提供程序返回的任何额外信息,因为表单是在身份验证之前填写的。
我真的只是在寻找一些想法/想法,关于最好的方法?我正在使用DotNetOpenAuth和ASP.NET MVC3,如果这有什么不同的话。
**这是秘密,不能发送到客户端,因此必须保存在服务器上。无法放入注册数据库表,因为在此阶段我没有任何其他非空字段。不允许使用会话,那么我应该把它放在哪里?
发布于 2011-01-05 11:53:25
两全其美!
查看this sample,它演示了只有一个同时接受OpenID和电子邮件地址的表单(您可以想象任意数量的其他字段)。在输入标识符(第一个)之后,您的站点会立即在用户键入更多详细信息时在后台开始OpenID发现过程。对于新用户,这可能不会导致具有详细信息的完整登录,因此用户单击一个按钮继续进行身份验证,身份验证完成后将填充OP自动提供的详细信息。然后,如果需要,用户可以更改它们,最后单击"Create account now“按钮。
发布于 2011-01-05 03:02:28
我自己经历了这个过程,我选择了选项(1) --跳OpenId舞,从提供者那里获得任何可用的字段,然后让用户填写空白处。
是的,这是多个步骤,但我认为总体上用户的工作较少;他们不需要键入OpenId提供商可能能够提供的信息。
https://stackoverflow.com/questions/4564337
复制相似问题