Как сайты StackexChange связывают учетные записи пользователей и OpenID в логах?
-
10-10-2019 - |
Вопрос
Я люблю подход 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
Таблица с одно-ко многим отношениям. Скот Хансельман есть хорошая базовая статья или попробуйте более подробный обзор