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.

Другие вопросы по тегам