Членство в ASP.NET - Является ли переключение имени приложения в Web.Config хорошей идеей? - PullRequest
0 голосов
/ 27 сентября 2010

Я нашел интересный способ решения следующей проблемы и хочу узнать, есть ли лучший способ для достижения моих целей.

По сути, я создаю базовую систему CMS, которую пользователи могут зарегистрироватьдля своего микросайта и имеют своих пользователей.Я использую api членства asp.net.

Я хотел найти способ изолировать пользователей различных микросайтов от друг друга, чтобы пользователь, прошедший аутентификацию по адресу www.mysite.com/johns-site, также не былаутентифицировался на www.mysite.com/pauls-site.

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

Чтобы добиться этого, я заметил, что в таблицах членства asp пользователь принадлежит приложению.Каждый раз, когда я получаю запрос, у меня есть метод, который переключает applicationName в web.config на основе URL.

Это легко отвечает моим целям, но немного хакерски.Есть ли альтернативный способ переключения приложений для поставщика членства?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2010

Можно получить / установить свойство ApplicatioName во время выполнения, однако, согласно приведенному ниже сообщению MSDN, это не рекомендуется, поскольку свойство не является потокобезопасным, т. Е. Если несколько пользователей одновременно создают учетные записи для разных приложений, оно может Неправильно назначено имя приложения для пользователя.

Синтаксис:

Membership.ApplicationName = "MyAppName"

OR

Membership.ApplicationName = "MyAppName";

Дополнительная литература:

http://msdn.microsoft.com/en-us/library/system.web.security.membership.applicationname.aspx

Примечание:

Вы обновляете содержимое файла web.config из кода приложения? Если так, то это, безусловно, "хакер". Кроме того, редактирование файла web.config приведет к удалению любых активных сеансов (если, конечно, ваше приложение использует состояние сеанса).

0 голосов
/ 27 сентября 2010

Я согласен, это хак, который, вероятно, заставит вас заплатить в какой-то момент.

Правильный способ сделать это - задействовать каждый виртуальный каталог (или микросайт, как вы говорите)каждый из которых определяет элемент <membership> с той же строкой подключения, но с другим атрибутом applicationName.

...