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

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

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

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

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

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам