Это позволит разработчикам пропадать впустую (еще больше) огромное количество времени, редактируя XML-файлы:)
Причины повышения делятся на две категории:
В первом случае гораздо лучше использовать олицетворение SPSite . Последнее - единственная причина, по которой я когда-либо использовал RWEP.
Чтобы уточнить, RWEP не порождает новый поток. Вместо этого он использует API Win32 для возврата к текущему потоку ' s идентичность обратно к идентификатору процесса (отключение олицетворения) для запуска кода с повышенными правами, затем снова включите олицетворение, чтобы возобновить работу от имени текущего пользователя. Это имеет несколько последствий:
И, как сказал Алекс, дочерние элементы SPSite наследуют свои разрешения от SPSite, который, в свою очередь, устанавливает свои разрешения при создании. Таким образом, SPContext.Current.Site по-прежнему будет вести себя с разрешениями текущего пользователя, даже если вы укажете его в своем CodeToRunElevated. Вместо этого вам нужно будет создать и использовать новый SPSite в блоке с повышенными правами.
Подводя итог: RWEP для олицетворения пула приложений за пределами SharePoint, олицетворение SPSite для олицетворения пула приложений внутри SharePoint.
который, в свою очередь, имеет свои разрешения, установленные при создании. Таким образом, SPContext.Current.Site по-прежнему будет вести себя с разрешениями текущего пользователя, даже если вы укажете его в своем CodeToRunElevated. Вместо этого вам нужно будет создать и использовать новый SPSite в блоке с повышенными правами.Подводя итог: RWEP для олицетворения пула приложений за пределами SharePoint, олицетворение SPSite для олицетворения пула приложений внутри SharePoint.
который, в свою очередь, имеет свои разрешения, установленные при создании. Таким образом, SPContext.Current.Site по-прежнему будет вести себя с разрешениями текущего пользователя, даже если вы укажете его в своем CodeToRunElevated. Вместо этого вам нужно будет создать и использовать новый SPSite в блоке с повышенными правами.Подводя итог: RWEP для олицетворения пула приложений за пределами SharePoint, олицетворение SPSite для олицетворения пула приложений внутри SharePoint.
1) Существенное использование RWEP является хорошим индикатором запаха кода. Им можно легко злоупотребить, не задумываясь, что приведет к серьезным проблемам с безопасностью. Многие разработчики не задумываются о том, что пользователи могут делать с властью, которая им косвенно предоставляется «под капотом».
Только один пример: важно вызвать ValidateFormDigest перед использованием RWEP, чтобы предотвратить вредоносные запросы в приложении страницы .
2) Объекты SPWeb и SPSite необходимо создавать в контексте RWEP. Новичкам легко забыть об этом, что приводит к большому разочарованию.
Это ограничение также означает, что вся работа и любые объекты, созданные этими объектами, должны использоваться и завершаться до окончания делегата RWEP. Это еще одна распространенная ошибка.
RWEP, как и все остальное, имеет свои плюсы и минусы.
Если вас беспокоит, что конечный пользователь запускает RWEP, возможно, у вас уже есть более серьезная проблема, поскольку этот код уже установлен на GAC.
Иногда вам просто нужно придерживаться этого: рассмотрим пользователя, у которого нет прав администратора, который запускает рабочий процесс с документами. После того, как этот пользователь одобрит (или отклонит, не имеет значения), ваш механизм рабочего процесса сможет переопределить эти привилегии SPListItem.
Я использую его и считаю его очень полезной функциональностью. На мой взгляд, я разрешаю пользователю запускать мой код и делать то, что пользователь обычно не может делать.