Как сайты StackexChange связывают учетные записи пользователей и OpenID в логах?

StackOverflow https://stackoverflow.com/questions/4395190

Вопрос

Я люблю подход Stackexhchange / Stackoverflow к интеграции OpenID.

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

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

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

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

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

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

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

Это было полезно?

Решение

Stackexchange сайты используют а Dotnetopenauth Библиотека (ранее известная как библиотека Dotnetopenid).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top