2

我在 Windows Server2012 R2 和 IIS 8.5 中使用 Active Directory 为每个用户创建一个 WebDav,并且可以通过用户名和用户密码访问它。每个用户一个文件夹。这可以完美地使用 WebDav 客户端。我还有一个使用 ithit-ajax-file-browser 的网络浏览器。

我的问题是,当我为 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');

`

自动登录有效,但登录弹出窗口仍然出现。有什么办法可以删除吗?我正在使用基本身份验证

4

2 回答 2

3

解决方案

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

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

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

于 2015-01-06T15:49:42.183 回答
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();

另一件事,可能导致标准 Web 浏览器登录对话框是 CORS 请求。这是在您的 settings.Url 参数包含位于另一个来源(域、端口或协议)的 WebDAV 服务器 URL 的情况下。不幸的是,这种情况没有任何真正的解决方案。唯一的解决方法是将带有 Ajax 文件浏览器的页面放在 WebDAV 服务器所在的同一台服务器上。您可以在此处找到有关它的更多信息。

于 2014-10-28T18:56:34.453 回答