Как сайты 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 есть хорошая базовая статья или попробуйте более глубокий обзор