Так. Решение следует: (не чистый, но работающий)
1) запишите собственный IHttpModule, содержа:
class LoginModule {
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(UglyHack);
}
void UglyHack(object sender, EventArgs e)
{
HttpCookie wannabe = (HttpContext.Current.Request.Cookies["_sp_admin_wanna_be_user"]);
if (wannabe != null && SPContext.Current.Web.CurrentUser.IsSiteAdmin)
{
SPWeb cw = SPContext.Current.Web;
typeof(SPWeb).GetField("m_CurrentUser", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(
SPContext.Current.Web,
cw.AllUsers[wannabe.Value]);
}
}
}
2) Подпишите его
3) GAC это
4) к web.config ().
Вуаля! Вы - человек. :) (конечно, я добавил логику для добавления установки cookie на меню, безопасность, и т.д.)
1. Откройте IIS Manager и перейдите к уровню, которым Вы хотите управлять. Для получения информации об открытии IIS Manager посмотрите, Открывают IIS Manager (IIS 7). Для получения информации о навигации к местоположениям в UI посмотрите Навигацию в менеджере по IIS (IIS 7).
2. В Представлении Функций, на сервере, сайт или applicationHome страница, дважды щелкает по Handler Mappings.
3. В области Actions нажмите Edit Feature Permissions.
4. В диалоговом окне Edit Feature Permissions сделайте следующее:
Выберите Read для включения обработчиков, которые требуют доступа для чтения или очищают Read для отключения обработчиков, которые требуют доступа для чтения к виртуальному каталогу.
Выберите Сценарии для включения обработчиков, которые требуют прав сценария или очищают Сценарии для отключения обработчиков, которые требуют прав сценария в виртуальном каталоге.
Выбор Выполняется для включения обработчиков, которые требуют, выполняют права, или ясный Выполняются для отключения обработчиков, которые требуют, выполняют права в виртуальном каталоге. Опция Execute включена только, когда Сценарии выбраны.