ithit-ajax-file-browser активная директория WebDav авто-логин
Я использую Active Directory в Windows Server2012 R2 и IIS 8.5 для создания WebDav для каждого пользователя, и к нему можно получить доступ через имя пользователя и пароль пользователя. Одна папка на пользователя. Это прекрасно работает с использованием клиентов WebDav. У меня также есть веб-браузер, использующий ithit-ajax-file-browser.
Моя проблема в том, что когда я устанавливаю параметры для веб-части, сервер показывает всплывающее окно аутентификации, прежде чем автоматически регистрировать меня.
Я использую
var settings = {
BasePath: '/davbrowser/',
Id: 'AjaxFileBrowserContainer',
Url: webDavServerPath,
Style: 'height: 100%; width: 100%',
MsOfficeTemplatesPath: '/templates/',
SelectedFolder: webDavServerPath,
ThemeName: 'windows_8',
IconsSize: 16
//Platform: 'mobile'
};
var ajaxFileBrowser = new ITHit.WebDAV.Client.AjaxFileBrowser.Controller(settings);
ajaxFileBrowser.GetSession().SetCredentials('username', 'password');
ajaxFileBrowser.SetSelectedFolder('/username');
`
Автоматический вход работает, но по-прежнему появляется всплывающее окно входа. Есть ли решение, чтобы удалить его? Я использую базовую аутентификацию
2 ответа
В своем коде в настройках вы устанавливаете параметр SelectedFolder. Это вызывает отправку запроса до вызова SetCredentials. Удалите параметр SelectedFolder и вызовите только SetSelectedFolder, который делает то же самое, но после вызова SetCredentials.
Я бы также предложил обновить ваш код для использования асинхронного подхода, представленного в IT Hit Ajax File Browser v2.1.0.1483:
var settings = {
BasePath: '/davbrowser/',
Id: 'AjaxFileBrowserContainer',
Url: webDavServerPath,
Style: 'height: 100%; width: 100%',
MsOfficeTemplatesPath: '/templates/',
//SelectedFolder: webDavServerPath,
ThemeName: 'windows_8',
IconsSize: 16
//Platform: 'mobile'
};
var ajaxFileBrowserLoader = new ITHit.WebDAV.Client.AjaxFileBrowserLoader(settings);
ajaxFileBrowserLoader.oninit = function(ajaxFileBrowser) {
// This event is fired when control is loaded and created.
ajaxFileBrowser.GetSession().SetCredentials('username', 'password');
ajaxFileBrowser.SetSelectedFolder('/username');
};
ajaxFileBrowserLoader.LoadAsync();
Еще одна вещь, которая может вызвать стандартный диалог входа в веб-браузер, - это запрос CORS. Это в том случае, если ваш параметр settings.Url содержит URL-адрес сервера WebDAV, который находится в другом источнике (домен, порт или протокол). К сожалению, нет никакого реального решения для этого случая. Единственным обходным решением будет размещение страницы с Ajax File Browser на том же сервере, где расположен сервер WebDAV. Вы можете найти больше информации об этом здесь.
РЕШЕНИЕ
Я использую базовую аутентификацию, и мне нужно отправить имя пользователя и пароль в заголовках. Я не могу использовать эту форму. username:password@fileserver/userfolder Этот метод работает только в Firefox. Это проблема здесь проблема хрома Таким образом, решение заключается в использовании XMLHttpRequest.
webDavServerPath = 'fileserver/userfolder';
var xml = new XMLHttpRequest();
xml.open('GET',webDavServerPath,false,username,password)
xml.send('');
Это работает нормально в большинстве браузеров и должно использоваться под SSL.