Как сайты StackExchange связывают учетные записи пользователей и логины OpenID? - PullRequest
5 голосов
/ 09 декабря 2010

Мне нравится подход StackExhchange / StackOverflow к интеграции OpenID.

Насколько я понимаю, процесс идет примерно так:

  • Если пользователь регистрируется у поставщика OpenID (т. е. Google), StackOverflow (или аналогичный сайт) создает учетную запись для пользователя и связывает OpenID с этой учетной записью.
  • Существующий пользователь может связать несколько учетных записей OpenID со своей учетной записью StackExchange.

Мне бы хотелось подражать этому поведению, потому что я не видел его таким удобным для пользователей на других сайтах.

Я знаю, что StackExchange построен на ASP.NET MVC, но не уверен, что он таков.использует стандартную модель учетных данных ASP.NET, а затем добавляет провайдера OpenID в отдельную таблицу БД или что-то подобное.

Итак, мои вопросы:

  • Как StackExchange создает эти учетные записи?Создают ли они пользователя в стандартном поставщике ASP.NET MVC, а затем связывают идентификатор, или существует отдельный процесс?
  • Как StackExchange позволяет связывать дополнительные учетные записи поставщика OpenID с существующей учетной записью?

Заранее благодарим за любую помощь, которую вы можете оказать!

1 Ответ

6 голосов
/ 09 декабря 2010

Сайты StackExchange используют библиотеку DotNetOpenAuth (ранее известную как библиотека DotNetOpenId).

В основном вам нужны таблица User и таблица User_OpenIDс отношениями один ко многим. Scot Hanselman имеет хорошую базовую статью или попробуйте более детальный обзор

...