Изменение ApplicationName поставщиков членства во время выполнения. Как?

У меня здесь немного уникальная ситуация. Я делаю веб-приложение, которое будет иметь возможность входа в систему с разными учетными данными веб-приложений. Например, вы можете войти / зарегистрироваться на моем сайте или вы можете войти / зарегистрироваться со своей учетной записью YouTube. Я не использую OpenID, потому что в этом случае мне нужен доступ к данным YouTube.

Я использую ASP.NET MVC 3 EF4 с настраиваемыми поставщиками членства, ролей и профилей.

Проблема в том, что имена пользователей не могут быть уникальными, потому что кто-то с именем пользователя YouTube может иметь то же имя пользователя, что и кто-то, зарегистрированный на моем сайте. Так что я обошелся, указав тип пользователя в своей таблице пользователей. Это в значительной степени составной ключ (идентификатор пользователя и тип пользователя).

У меня есть настраиваемый атрибут авторизации, который проверяет роль, в которой находится пользователь, но теперь мне нужно реализовать настраиваемый IPrincipal, потому что мне нужно передать тип пользователя. Единственная проблема в том, где мне это хранить? сессия?

Первоначально я думал, что это то, для чего предназначена таблица Application, и у меня был кратковременный успех, но я прочитал, что есть проблемы с потоками, и я получал ошибки сеанса повсюду, это было не так уж и хорошо: (

Мне интересно, что лучше всего сделать с этим, потому что я не могу использовать переопределенные методы в поставщиках, потому что мне нужно добавить параметр UserType к некоторым из методов, но тогда это нарушает функциональность поставщика.

РЕДАКТИРОВАТЬ: Мне в основном нужна возможность изменять ApplicationName во время выполнения программно. Я попытался сделать это, единственная проблема заключалась в том, что я остановил свой сервер разработки, но оставил свой браузер открытым, а затем снова запустил свой сервер разработки, он не сохранил имя приложения.

EDIT: Я изменил свое приложение на использование OAuth, я так и не нашел подходящего решения.

7
задан Ryan 23 June 2011 в 03:08
поделиться