Получение зарегистрированных пользователей, данного SPWEB, независимо от повышенных привилегий
-
10-12-2019 - |
Вопрос
У меня есть требование, чтобы иметь возможность всегда получать войти в систему пользователя.
Объект Процесс вызова переходит, - это SPWEB.
Как это устарело код, я не могу изменить то, что отправляют процессы вызова, и вот проблема: Некоторые из них проходят в SPWEB, как оно есть, и некоторые отправляют в SPWEB, который находится в повышенных привалевых привале.Для возвышенных приводов зарегистрированные пользователи возвращаются в виде системы.
В обоих случаях я хочу получить текущий вошел в систему пользователя.
Это вообще возможно?
Решение
У вас есть две возможные ситуации здесь.
Редактировать
Что делать, если ваш метод вызывается внутри прогонтелевоващенныхprivileges, но вы не уверены в том, чтобы иметь действительный SPCONTEXT? Это всего лишь очень дикое предположение, но давайте подумаем об этом.
RunwithelevatedPrivileges вернется к идентичности бассейна приложения, верно? Если нет пула приложений, это будет означать, что нет идентификации пула приложений, поэтому текущий пользователь снаружи и внутри делегата должен быть одинаковым. Если есть пул приложения, в большинстве случаев у вас будет SPCONTEX, который не передается определением. Есть также какой-то конкретный случай, когда вы работаете в рабочих местах таймера, и такие
На основании этого, кажется, что ваша лучшая ставка состоит в том, чтобы использовать пользователь от SPCONTEX, когда это возможно, и предположим, что повышенный и неуверенный пользователь будет одинаковым, когда контекст NULL. Возьмите это с зерном соли, хотя ...
Другие советы
Поскольку Fazio заявил, что исходный разработчик, который сделал код негаси, который должен был использовал убедитель, чтобы пройти объект SPWEB, но в вашем случае нет, вы не можете!
Увеличение означает, что ваш объект SPWEB повышен к пользователю системы и вернет этот пользователь независимо от того, чтобы объект SPWEB не будет расположен!
SPUser loggedinUser = SPContext.Current.Web.CurrentUser;
.
Приведенный выше код будет работать, если выходит из приподнятого объекта SPWEB, но если его внутри повышенного блока он вернет системный счет, к сожалению,
Можете ли вы опубликовать какой-нибудь код?Или дайте нам еще больше информации, где вы собираетесь использовать объект SPWEB, который пропускается?Может быть, вы можете использовать код выше в текущем объекте Open SPWEB, а затем установите объект SPWEB на повышенный объект?
Но короткий ответ - нет, вы не можете получить фактическую запись пользователями от повышенного пользователя!