IIS Возвращая Старые Имена пользователей моему приложению

Эта конструкция называется Тернарным оператором в области компьютерных наук и программирования. И Wikipedia предлагают следующее объяснение:

В информатике троичный оператор (иногда неправильно называемый третичным оператором) является оператором, который принимает три аргумента. Аргументы и результат могут быть разных типов. Многие языки программирования, использующие синтаксис C-типа, имеют тройной оператор,? :, который определяет условное выражение.

blockquote>

Не только в Java этот синтаксис доступен в PHP, Objective-C тоже .

В следующей ссылке он дает следующее объяснение, которое очень приятно понять:

Тернарный оператор - это некоторая операция, выполняющая на 3 входах. Это ярлык для оператора if-else и также известен как условный оператор.

В Perl / PHP он работает как: boolean_condition ? true_value : false_value

В C / C ++ он работает как: logical expression ? action for true : action for false

blockquote>

Это может быть читаемо для некоторых логических условий, которые не слишком сложны, в противном случае лучше использовать блок If-Else с предполагаемой комбинацией условной логики.

Мы можем упростить блоки If-Else с помощью этого оператора Ternary для одной строки оператора кода. Например:

if ( car.isStarted() ) {
     car.goForward();
} else {
     car.startTheEngine();
}

Возможно, это будет следующее:

( car.isStarted() ) ? car.goForward() : car.startTheEngine();

Итак, если мы ссылаемся на ваше утверждение:

int count = isHere ? getHereCount(index) : getAwayCount(index);

Это фактически 100% эквивалент следующего блока If-Else:

int count;
if (isHere) {
    count = getHereCount(index);
} else {
    count = getAwayCount(index);
}

Вот и все! Надеюсь, это помогло кому-то! Ура!

31
задан Dave Markle 13 August 2013 в 11:58
поделиться

7 ответов

Проблема как определенный AviD является кэшем Active Directory, которым можно управлять через реестр . В зависимости от Вашего решения опции групповой политики Avid перестанет работать или работать зависящий, если Вы на самом деле зарегистрируете пользователей в или нет.

то, Как это кэшируется, зависит от того, как Вы проходите проверку подлинности на IIS. Я подозреваю, что это мог быть Kerberos так, чтобы сделать очистку, если это вызывается Kerberos, можно хотеть попробовать klist опцией чистки, которая должна произвести чистку kerberos билетов, которые вызовут reauth к AD на следующей попытке и обновят детали.

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

4
ответ дан 27 November 2019 в 22:37
поделиться

Я знаю, что у нас были кэшируемые проблемы учетных данных в IIS в прошлом здесь также, и после Гугления в течение многих дней мы столкнулись с неясным (нам, по крайней мере) управляют, чтобы можно было использовать, чтобы просмотреть и очистить кэшируемые учетные данные.

Запускаются->, Выполнение (или WinKey+R) и тип управляет keymgr.dll

, Это решило наши проблемы для клиентских машин. Не попробовали его на серверах, но это могло бы стоить того, чтобы попытаться, если это - учетные данные кэширования сервера. Наша проблема была, мы получали старые учетные данные, но только на клиентской основе машины. Если пользователь вошел в систему на отдельной клиентской машине, все было прекрасно, но если они использовали свою собственную машину за их столом, что они обычно работают над ним, имел кэшируемые старые учетные данные.

4
ответ дан 27 November 2019 в 22:37
поделиться

Если это не проблема изменения только Имени пользователя NT, то действительно кажется, что услуга аутентификации кэширует старое имя пользователя.
можно определить это, чтобы быть отключенными, перейдите к Локальным параметрам безопасности (в Средствах администрирования), и в зависимости от версии/выпуска/конфигурации настройки, которые являются возможны релевантный (из памяти), являются "Количеством предыдущих входов в систему для кэширования", и "Не позволяют устройство хранения данных учетных данных...".

Дополнительные факторы для принятия во внимание:

  • Доменное членство могло бы влиять на это, поскольку рядовые серверы могут наследовать доменные настройки
  • , Вы, возможно, все еще должны перезапустить целый сервер однажды, чтобы это взяло влияние (но затем Вы не должны будете волноваться об обновлениях в будущем).
  • выполнение Входа в систему могло бы быть затронуто.

По сути, я рекомендую протестировать это сначала прежде, чем развернуться на производстве (конечно).

3
ответ дан 27 November 2019 в 22:37
поделиться

Перезапуск IIS, не целой машины, должен добиться цели.

1
ответ дан 27 November 2019 в 22:37
поделиться

Когда имена этих пользователей изменились, Вы изменяли только их Имена для входа в систему NT или их имена UPN также? имена UPN являются именами собственными, и используемый Kerberos - который является протоколом по умолчанию для IWA; однако, если Вы просто нажимаете, чтобы изменить их имя в ActiveDirectory, только изменения Имени для входа в систему NT - даже при том, что это - то, что они использовали бы для входа в систему (использующий окна GINA по умолчанию). Под покрытиями окна перевели бы (новое) Имя для входа в систему NT к (старому) имени Kerberos. Это сохраняется, пока AD не вынужден обновить имя Kerberos согласно Имени для входа в систему NT...

1
ответ дан 27 November 2019 в 22:37
поделиться

Войдите в систему к серверу, который выполняет IIS с помощью нового рассматриваемого имени для входа в систему. Это обновит учетные данные, не перезапуская IIS или перезагружая сервер.

0
ответ дан 27 November 2019 в 22:37
поделиться

Эта ссылка «Изменение интервала по умолчанию для пользовательских токенов в IIS» от службы поддержки MicroSoft должно помочь.

1
ответ дан 27 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: