2

Я использую Active Directory в Windows Server2012 R2 и IIS 8.5 для создания WebDav для каждого пользователя и к нему можно получить доступ через имя пользователя и пароль пользователя , Одна папка на пользователя. Это прекрасно работает с использованием клиентов WebDav. У меня также есть веб-браузер с использованием ithit-ajax-файла-браузера.Активный каталог ithit-ajax-file-browser WebDav автоматический вход

Моя проблема заключается в том, что когда я устанавливаю параметры веб-части, сервер обнаруживает всплывающее окно аутентификации, прежде чем автоматически регистрировать меня.

I'im использованием

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'); 

`

Auto-вход работает, но по-прежнему отображается Войти всплывающий. Есть ли решение удалить его? Я использую базовую аутентификацию

ответ

1

В вашем коде в настройках вы устанавливаете параметр 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. Вы можете найти дополнительную информацию об этом here.

+0

Это не решило мою проблему. Есть ли какая-либо проблема архитектуры в отношении типа аутентификации IIS или правил Webdav Authoring или может быть пулом приложений? Есть ли какой-либо учебник, который может помочь –

+0

Вы используете междоменный доступ? Это также может привести к появлению всплывающего окна стандартного веб-браузера. Я добавил абзац о CORS. –

+0

Я думаю, что проблема в WebDavServerPath = https: // FileServer /. Для каждого пользователя соответствующий файл DavFolder находится на https: // FileServer/username. Обратите внимание, что имя папки совпадает с именем пользователя. В правилах авторизации в IIS я разрешаю только пользователям домена. Есть ли какие-либо разъяснения в этом случае. –

3

РЕШЕНИЕ

Я использую основную аутентификацию, и мне нужно отправить имя пользователя и пароль в заголовках. Я не могу использовать эту форму. username: password @ fileserver/userfolder Этот метод работает только с firefox. Здесь проблема chromium issue Таким образом, решение заключается в использовании XMLHttpRequest.

webDavServerPath = 'fileserver/userfolder'; 
var xml = new XMLHttpRequest(); 
xml.open('GET',webDavServerPath,false,username,password) 
xml.send(''); 

Это прекрасно работает в большинстве браузеров и должно использоваться по SSL.