Active Directory - имя пользователя Проверки / пароль

Предупреждение: невозможно изменить информацию заголовка - уже отправленные заголовки

Случается, когда ваш скрипт пытается отправить HTTP-клиенту клиенту, но он уже был выведен ранее, что привело к тому, что заголовки уже отправлены на клиент.

Это E_WARNING , и он не остановит сценарий.

Типичным примером может быть файл шаблона, подобный этому:


    
    My Page

...

Функция session_start() попытается отправить клиенту файлы cookie сеанса. Но PHP уже отправил заголовки, когда он написал элемент в выходной поток. Вам нужно будет переместить session_start() в верхнюю часть.

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

Часто пропускаемый вывод - это новые строки после закрытия PHP ?>. Считается стандартной практикой опускать ?>, когда это последняя вещь в файле. Аналогичным образом, еще одной распространенной причиной этого предупреждения является то, что перед открытием перед ним появляется пустое пространство, строка или невидимый символ, в результате чего веб-сервер отправляет заголовки и пробел / новую строку, таким образом, когда PHP начинает синтаксический анализ, он не сможет для отправки любого заголовка.

Если в вашем файле содержится более одного кодового блока , у вас не должно быть пробелов между ними. (Примечание: у вас может быть несколько блоков, если у вас есть код, который был автоматически сконструирован)

Также убедитесь, что в вашем коде не указаны знаки байтового заказа, например, когда кодировка скрипта является UTF -8 с BOM.

Вопросы, относящиеся

34
задан Community 23 May 2017 в 12:19
поделиться

4 ответа

Если Вы используете использование .net 3.5 этот код вместо этого.

Для аутентификации пользователя:

PrincipalContext adContext = new PrincipalContext(ContextType.Domain);

using (adContext)
{
     return adContext.ValidateCredentials(UserName, Password);
}

, Если необходимо найти, пользователь к атрибутам R/W к объекту делает это:

PrincipalContext context = new PrincipalContext(ContextType.Domain);
UserPrincipal foundUser = 
    UserPrincipal.FindByIdentity(context, "jdoe");

Это использует Систему. DirectoryServices. Пространство имен AccountManagement, таким образом, необходимо будет добавить его к операторам использования.

, Если необходимо преобразовать объект UserPrincipal в объект DirectoryEntry работать с унаследованным кодом, можно сделать это:

DirectoryEntry userDE = (DirectoryEntry)foundUser.GetUnderlyingObject();
49
ответ дан Mikael Östberg 27 November 2019 в 16:52
поделиться

Я понял его во всяком случае, Если Вы передаете в домене с именем пользователя на перспективе, это не работает как "domain\user" поэтому просто, передающий "пользователь" вместо этого, кажется, работает хорошо - кроме Вас, должны быть на том же домене

1
ответ дан Michael G 27 November 2019 в 16:52
поделиться

Привязка к LDAP требуют поднятого privs (контроль учётных записей)? Вы могли попытаться запустить Visual Studio и/или приложение как Администратор и видеть, помогает ли это. Если это - проблема, Вы могли бы всегда добавлять декларацию к приложению и устанавливать его для требования повышения, тот способ, которым оно запросит, когда пользователь выполнит его.

Не уверенный, почему это потребовало бы поднятого privs, но это стоит того, чтобы попытаться.

0
ответ дан Steven Robbins 27 November 2019 в 16:52
поделиться

Я обнаружил, что тот же код плавает в Интернете на нескольких веб-сайтах, и у меня он не сработал. Стив Эванс, вероятно, прав в том, что если вы используете .NET 3.5, вам не следует использовать этот код. Но если вы все еще используете .NET 2.0, вы можете попробовать это для аутентификации в ваших службах AD:

DirectoryEntry entry = new DirectoryEntry("LDAP://" + domain, 
   userName, password, 
   AuthenticationTypes.Secure | AuthenticationTypes.SecureSocketsLayer);
object nativeObject = entry.NativeObject;

Первая строка создает объект DirectoryEntry с использованием домена, имени пользователя и пароля. Он также устанавливает AuthenticationTypes. Обратите внимание, как я устанавливаю и безопасную (Kerberos) аутентификацию, и SSL, используя оператор «Побитовое ИЛИ» ('|') между двумя параметрами.

Вторая строка вынуждает NativeObject из «входа» связываться со службами AD, используя информацию из первой строки.

Если возникает исключение, значит учетные данные (или настройки) неверны. Если нет исключения, вы аутентифицированы. Сообщение об исключении обычно указывает, что пошло не так.

Этот код очень похож на тот, который у вас уже есть, но домен используется там, где у вас есть «путь», а имя пользователя не объединяется с доменом. Не забудьте также правильно установить AuthenticationTypes.Это может сделать или нарушить возможность аутентификации.

8
ответ дан 27 November 2019 в 16:52
поделиться
Другие вопросы по тегам:

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