Active directory i它是ajax文件浏览器active directory WebDav自动登录

Active directory i它是ajax文件浏览器active directory WebDav自动登录,active-directory,windows-server-2012,php-5.5,iis-8.5,ithit-ajax-file-browser,Active Directory,Windows Server 2012,Php 5.5,Iis 8.5,Ithit Ajax File Browser,我正在使用Windows Server2012 R2和IIS 8.5中的Active Directory为每个用户创建一个WebDav,可以通过用户名和用户密码进行访问。 每个用户一个文件夹。 这在使用WebDav客户端时非常有效。 我还有一个web浏览器,它使用的是ajax文件浏览器 我的问题是,当我为web部件设置参数时,服务器会在自动记录我之前显示一个身份验证弹出窗口 我正在使用 var settings = { BasePath: '/da

我正在使用Windows Server2012 R2和IIS 8.5中的Active Directory为每个用户创建一个WebDav,可以通过用户名和用户密码进行访问。 每个用户一个文件夹。 这在使用WebDav客户端时非常有效。 我还有一个web浏览器,它使用的是ajax文件浏览器

我的问题是,当我为web部件设置参数时,服务器会在自动记录我之前显示一个身份验证弹出窗口

我正在使用

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

自动登录可以工作,但登录弹出窗口仍然出现。 有什么办法可以删除它吗?
我正在代码中使用基本身份验证,在设置中,您正在设置SelectedFolder参数。这会导致在调用SetCredentials之前发送请求。删除SelectedFolder设置并仅调用SetSelectedFolder,该设置正在执行相同的操作,但在SetCredentials调用之后

我还建议您更新代码以使用异步方法,该方法在Hit Ajax文件浏览器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();
另一件可能导致标准web浏览器登录对话框的事情是CORS请求。在这种情况下,您的settings.Url参数包含位于另一个源域、端口或协议中的WebDAV服务器Url。不幸的是,这种情况没有任何真正的解决办法。唯一的解决办法是将带有Ajax文件浏览器的页面放在WebDAV服务器所在的同一台服务器上。您可以找到有关它的更多信息。

解决方案

我正在使用基本身份验证,我需要在标题中发送用户名和密码。 我不能用这个表格。用户名:password@fileserver/用户文件夹 此方法仅适用于firefox。这是个问题 因此,解决方案是使用XMLHttpRequest

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

这在大多数浏览器中工作正常,必须在SSL下使用。

这并没有解决我的问题。是否存在任何与IIS身份验证类型或Webdav创作规则有关的体系结构问题,或者可能与应用程序池有关?是否有任何教程可以帮助您使用跨域访问?这也会导致标准web浏览器对话框弹出。我已经添加了关于CORS的段落。我认为问题在于WebDavServerPath=。对于每个用户,相应的文件夹位于上。请注意,文件夹名称与用户名相同。在IIS中的自动调整规则中,我只允许域用户。解决方案我正在使用基本身份验证,我需要在标题中发送用户名和密码。我不能使用此表单。此方法仅适用于firefox。这是一个问题[chromium issue][1][1]:因此解决方案是使用XMLHttpRequest。webDavServerPath=;var xml=新的XMLHttpRequest;打开'GET',webDavServerPath,false,用户名,密码xml.send;这在大多数浏览器中工作正常,必须在SSL下使用。