Группы Sharepoint и анонимный доступ

#sharepoint #sharepoint-2010 #anonymous-users

#sharepoint #sharepoint-2010 #анонимные пользователи

Вопрос:

Я создал пользовательский сайт, который обеспечивал бы регистрацию для нового пользователя, который хотел бы получить доступ к моему сайту sharepoint с asp.net учетная запись участника. Когда новый пользователь нажимает кнопку зарегистрироваться, я хотел бы отправить уведомление по электронной почте о новом пользователе всем членам определенной группы sharepoint. Проблема в том, что сайт регистрации разрешает анонимный доступ (ну, он должен :)) но код (вторая строка), который объединяет всех пользователей в группу, перенаправляет меня на страницу входа:

 var web = SPContext.Current.Web;
return web.Groups[groupName].Users;
  

Я создал новую группу пользователей и установил «Кто может просматривать членство в группе?» для всех, но все равно я не могу получить группы, не войдя в систему. Возможно ли это вообще?

Ответ №1:

SharePoint имеет возможность запускать блоки кода, используя RunWithElevatedPrivileges, который выполняется под идентификатором системной учетной записи SharePoint. Если вы обернете приведенный выше блок кода, вы сможете получить группу, на которую ссылаетесь.

Действительно важно убедиться, что вы правильно вызываете Dispose в своем коде, чтобы не оставлять ссылки на объект SPSite и т.д. В результате почти во всех примерах RunWithElevatedPrivileges используется конструкция using.

Дополнительная информация на

http://msdn.microsoft.com/en-us/library/bb466220.aspx

Комментарии:

1. Кажется, что это должно решить проблему, однако в моем случае это не так, я все еще перенаправляюсь на свою страницу входа. возможно, это как-то связано со свойствами сайта, но я полагаю, что у меня все они настроены нормально.

2. Я добавлю свой код на всякий случай, может быть, здесь есть что-то, что я делаю неправильно, но не могу этого увидеть: SPSecurity. Выполнить с повышенными привилегиями(delegate() { используя (SPSite ElevatedsiteColl = новый SPSite(SPContext.Current.Site. ИДЕНТИФИКАТОР)) { используя (SPWeb ElevatedSite = ElevatedsiteColl. OpenWeb(SPContext.Current.Web.ID )) { userColl = ElevatedSite.SiteGroups[имя_группы]. Пользователи; } } });

3. Трудно сказать по коду, но вам нужно «использовать» объект, на который вы хотите ссылаться, в блоке ElevatedPrivileges. Это выходит за рамки, как только вы покидаете блокировку, или больше не будет выполняться в контексте повышенной безопасности

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

Ответ №2:

Когда я делал это раньше, я создал список, который позволял анонимным пользователям создавать новые элементы, а затем поместил в список оповещение, которое отправляло уведомления соответствующим людям / группе. Я не помню, чтобы были какие-либо проблемы с безопасностью при отправке уведомлений таким образом.