Сериализация запроса на аутентификацию в DotNetOpenAuth - PullRequest
0 голосов
/ 02 апреля 2012

Я реализовал поставщика OpenID и проверяющую сторону OpenID, оба настроены в среде балансировки нагрузки.

Я реализовал соответствующие хранилища БД, но теперь у меня осталась зависимость ProviderEndpoint в сеансе.

Я хотел бы как-то сохранить запрос, не используя ProviderEndpoint, а какой-то другой механизм, который не зависит от сеансов в памяти.Например, сохранение запроса в Cookie или в строке запроса.

Проблема, с которой я столкнулся, заключается в том, что я не могу сериализовать IAuthenticationRequest или IRequest.Базовые классы являются внутренними, поэтому я также не могу привести их к этому.

У кого-нибудь есть указания, как реализовать это без использования Sessions?

Спасибо

1 Ответ

1 голос
/ 03 апреля 2012

Классы, реализующие IAuthenticationRequest и IRequest, действительно [Serializable].Вы должны иметь возможность сериализовать их для общего хранилища на всех серверах.Метод управления ProviderEndpoint для их сохранения предназначен исключительно для удобства простых сайтов.Вам не нужно его использовать.

Например:

IAuthenticationRequest request; // you obtain this from DNOA
IFormatter formatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
formatter.Serialize(ms, request);
ms.Position = 0;
request = (IAuthenticationRequest)formatter.Deserialize(ms);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...