2010-10-27 31 views
1

我在探索一个新的“爱好”项目OpenID。主要是为了了解它是如何工作的,并下载了DotNetOpenAuth示例并查看了Nerddinner实现。存储用户OpenID以及如何处理不同的提供商网址

我有几个问题。

  1. 你在本地存储什么以识别返回的用户(角色管理,他们的帖子,无论)?我看到的是使用ClaimedIdentifier的人引导我进入下一个问题。

  2. 你如何处理用户选择OpenID的另一个网址?

如果我使用谷歌作为我的供应商,我可以使用“http://www.google.com/accounts/o8/id”作为URL或我可能会使用“http://www.google。 COM /型材/用户名”。在DotNetOpenAuth依赖方示例中,使用这两个时,我会得到不同的ClaimedIdentifier值。

www.google.com/accounts/o8/id?id=blahblahbla 和 www.google.com/profiles/

望着stackoverflow.com登录似乎对此进行处理并得到我我的帐户时使用任一谷歌网址或使用Facebook。

但是,不同的OpenID提供者不知道对方是不是我对不对?

无论如何,我希望你们中的一些聪明的人可以帮助我了解:)

-

基督教

回答

1

您想使用FormsAuthentication方法,使asp.net保持登录的用户。你只是简单地使用OpenId来验证你不管理的提供者的用户名和密码。

是的,声明的标识符是从开放标识提供商标识用户的标记。如果您想为用户分配多个声明的标识符,则只需将所有声明的标识符存储在数据库中即可。在身份验证过程中检查哪个用户被附加到声明的标识符。

+0

感谢尼克,但是如何在使用两个不同的URL登录时使用stackoverflow知道我是同一个用户?我甚至在不同的浏览器中尝试过,以确保没有cookie被遗漏,以将一次登录尝试与另一次登录尝试联系起来。我是否缺少关于OpenID的内容? – 2010-10-27 21:19:30

+0

StackOverflow使用名为stackAuth的东西,这是他们构建的自定义解决方案,可跨越所有网站。我只能想象这种魔法是内在的。尽管我认为在某些时候你必须登录,而附加其他人。 – 2010-10-27 21:44:49

+0

然后魔法:)再次感谢... – 2010-10-29 15:39:25