Извините, если я не понимаю, что означает «дочерний сайт». Используете ли вы этот термин для обозначения идеи создания мини-сайтов на большом мастер-сайте? Если это так, я думаю, я понимаю, что вы хотите сделать, но я должен сказать, что система членства в asp.net 2.0 - это в значительной степени фреймворк, в котором вам нужно будет работать, чтобы создать то, что вы хотите.
В любом случае, как I сделает это (и это основано на членстве .net, используемом «из коробки»):
ASP.NET позволяет присоединять «роли» к пользователям и атрибуты «профиля» для этих пользователей. Профили используются для прикрепления к пользователям таких вещей, как «номер телефона» и другие метаданные, но вы также можете использовать их для привязки к ним своего домашнего «подсайта».
Я хотел бы создать роль под названием globaladmin, создать себя как пользователя и затем назначить вас (и только вас) на эту роль. Затем я создал бы роль «siteadmin» и назначил бы эту роль каждому администратору дочернего сайта, но с особой осторожностью назначил ему запись профиля «site», значение которой соответствует сайту, для которого он является администратором.
Например, 'user123' будет назначен роли 'siteadmin', а их атрибут профиля профиля 'site' может быть 'subsitexyz'. Затем они будут определены как администратор этого сайта.
Вышеуказанное является работоспособным, но если вы действительно хотите сделать это как можно более гладким, создайте свой собственный MembershipProvider (SubsiteMembershipProvider) и создайте новый класс SubsiteMembershipUser , который наследуется от MembershipUser, который возвращает ваш новый поставщик. Затем вы можете добавить свои собственные свойства в SubsiteMembershipUser, которые ваше приложение может запросить, чтобы узнать, к какому сайту принадлежит пользователь:
//get current logged on user - cast it to our custom membership user object
SubsiteMembershipUser thisUser = (SubsiteMembershipUser)GetUser();
if(thisUser.SubsiteName == SiteUserIsBrowsingString
&& Roles.IsUserInRole(thisUser.UserName, "siteadmin"))
//user is admin for this site so do something