Подтвердить что ты не робот

Использование OpenID (через DotNetOpenAuth), а также роли пользователя и другие функции поставщика членства

Я создаю сайт ASP.NET MVC, где я хочу использовать aspnet_regsql.exe.

4b9b3361

Ответ 1

Они будут прекрасно взаимодействовать, но вам нужно будет выполнить небольшую работу.

То, что я делал в прошлом, следующее:

Сначала я предполагаю, что у вас есть полуработающая реализация openid, то есть вы можете получить фактическую идентификацию от провайдера openid, но просто не знаете, что с ней делать.

Я продолжаю использовать FormsAuthentication как задний конец, даже не используя его для аутентификации.

Вам понадобится таблица базы данных, которая позволит связать пользователя FormsAuthentication с одним или несколькими openids. Вы можете просто сохранить имя пользователя FormsAuthentication (которого еще нет) с URL-адресом, который вы получаете от провайдера openid. Мы будем называть эту таблицу AUTH

Когда кто-то аутентифицируется на вашем сайте с помощью проверки openid, существует ли она в таблице AUTH. Если нет, вам нужно сделать две вещи. Вызовите Membership.CreateUser(), передавая любое сгенерированное имя пользователя, которое вы хотите (или адрес электронной почты, если он предоставлен openid). Я использую GUID для пароля, так как он не будет использоваться. В то же время поместите запись в таблицу AUTH, сопоставляя имя пользователя Membership с идентификатором, объявленным openid.

Когда кто-то аутентифицируется на вашем сайте с открытым идентификатором, и он уже существует, будет установлен метод FormsAuthentication.RedirectFromLoginPage с именем пользователя, связанным с openid и всеми соответствующими билетами проверки подлинности.

Теперь вы можете использовать все хорошие встроенные объекты безопасности, как всегда, до реализации openid.

EDIT: В качестве дополнительного преимущества этой настройки у вас есть возможность в будущем разрешить логин/пароль для входа в систему.

Вы также можете поменять свой членский член в любое время.

Кроме того, многозначность таблицы AUTH позволяет легко связывать несколько открытых объектов.