. Для этого есть несколько причин:
free()
реализации никогда не возвращают память в операционную систему. Что касается возможности будущего использования кода, оправдывая определенность бессмысленных операций: это соображение, но это, возможно, не способ Agile . YAGNI!
Они будут хорошо взаимодействовать, но вам нужно будет немного поработать.
Что я делал в прошлом, так это:
Сначала я предполагаю, что у вас есть полуработающая реализация openid, то есть вы можете получить реальную личность от поставщика openid, но просто не знаете, что делать. с этим.
Я продолжаю использовать FormsAuthentication в качестве серверной части, даже не используя ее для аутентификации.
Вам понадобится таблица базы данных, которая позволяет привязать пользователя FormsAuthentication к одному или нескольким openids. Вы можете просто сохранить имя пользователя FormsAuthentication (которое еще не существует) с идентификатором URL, который вы получаете от поставщика openid. Мы назовем эту таблицу AUTH
Когда кто-то аутентифицируется на вашем сайте с помощью openid, проверьте, существует ли он в таблице AUTH. Если нет, вам нужно сделать две вещи. Вызовите Membership.CreateUser (), передав любое сгенерированное имя пользователя (или адрес электронной почты, если он предоставлен openid). Я использую GUID для пароля, поскольку он не будет использоваться. В то же время поместите запись в таблицу AUTH, отображающую имя пользователя Членства в заявленную идентификационную информацию openid.
Когда кто-то аутентифицируется на вашем сайте с открытым идентификатором, и он уже существует, вызовите FormsAuthentication.RedirectFromLoginPage с именем пользователя, связанным с openid, и все соответствующие билеты для аутентификации будут установлены.
Теперь вы можете использовать все красивые встроенные объекты безопасности, как всегда, до реализации openid.
РЕДАКТИРОВАТЬ: В качестве дополнительного преимущества этой настройки у вас есть возможность в будущем разрешить вход в систему по имени пользователя / паролю.
Вы также можете поменять поставщика услуг в любое время.
Кроме того, многозначный характер таблицы AUTH позволяет легко связать несколько открытых элементов.