Uploadify(闪存文件上传)和集成 Windows 身份验证

2024-01-06

我遇到了 Uploadify 的问题,希望有人能提供帮助。我已将 Uploadify 放入我的应用程序中,并且在开发中一切正常(使用 VS Web 服务器)。一切正常并经过检查,直到我将应用程序部署到使用集成 Windows 身份验证的测试环境中。

当我实际上传文件时,浏览器会弹出登录提示。此时,即使您输入正确的用户名和密码,请求似乎也没有完成,即使您告诉浏览器记住密码,它仍然会弹出登录提示。

当这种情况开始发生时,我决定启动 Fiddler 看看发生了什么。但你猜怎么着,当 Fiddler 运行时,这个问题就不会发生。

不幸的是,我无法将运行 Fiddler 作为运行该应用程序的必要条件。因此有人有任何想法吗?我知道使用表单身份验证时 Uploadify/flash 存在一些问题,但我认为它们不会影响到集成 Windows 身份验证。


我看到这个页面,我几乎放弃了,但后来我遇到了这个article http://www.pluralsight-training.net/community/blogs/craig/archive/2004/07/24/1699.aspx来自 PluralSight 的 Craig。这给了我从 ASP.Net 而不是 IIS 返回 401 的想法,这就是在 IIS 中启用匿名身份验证的原因。

以下是解决该问题的步骤。

步骤 1:在 IIS 中启用匿名身份验证和 Windows 身份验证。

步骤 2:将此代码添加到您的 Global.asax.cs
信用/感谢: 使用 ASP.NET MVC 上传(会话和身份验证) https://stackoverflow.com/questions/1729179/uploadify-session-and-authentication-with-asp-net-mvc
Note:在我的版本中,只有 POST 请求使用特殊逻辑,因为我只希望此代码适用于 uploadify。换句话说,我删除了 GET 请求的代码。如果您想支持 GET,请查看上面的链接。

protected void Application_BeginRequest(object sender, EventArgs e)
{
    /* we guess at this point session is not already retrieved by application so we recreate cookie with the session id... */
    try
    {
        string session_param_name = "ASPSESSID";
        string session_cookie_name = "ASP.NET_SessionId";

        if (HttpContext.Current.Request.Form[session_param_name] != null)
        {
            UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]);
        }

    }
    catch
    {
    }

    try
    {
        string auth_param_name = "AUTHID";
        string auth_cookie_name = FormsAuthentication.FormsCookieName;

        if (HttpContext.Current.Request.Form[auth_param_name] != null)
        {
            UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]);
            return; // this is an uploadify request....get out of here.
        }

    }
    catch
    {
    }

    // handle the windows authentication while keeping anonymous turned on in IIS.
    // see: https://stackoverflow.com/questions/2549914/uploadify-flash-file-upload-integrated-windows-authentication

    if (Request.ServerVariables["LOGON_USER"].Length == 0) // They haven't provided credentials yet
    {
        Response.StatusCode = 401;
        Response.StatusDescription = "Unauthorized";
        Response.End();
        return;
    }

    FormsAuthentication.SetAuthCookie(Request.ServerVariables["LOGON_USER"], true); 

}

private void UpdateCookie(string cookie_name, string cookie_value)
{
    HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
    if (null == cookie)
    {
        cookie = new HttpCookie(cookie_name);
    }
    cookie.Value = cookie_value;
    HttpContext.Current.Request.Cookies.Set(cookie);
} 

步骤 3:更新调用 uploadify 的 javascript 以包含表单的身份验证密钥和会话密钥。

<script> 
    var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>"; 
    var ASPSESSID = "<%= Session.SessionID %>"; 

    $("#uploadifyLogo").uploadify({ 
        ... 
        scriptData: { ASPSESSID: ASPSESSID, AUTHID: auth } 
    }); 

第 4 步:更新您的 web.config

  <system.web>
    ...
    <authentication mode="Forms">
      <forms defaultUrl="/" />
    </authentication>
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Uploadify(闪存文件上传)和集成 Windows 身份验证 的相关文章

随机推荐

  • 使 UITableView 看起来更像一个“传统”表格,具有多个列

    我有一个相当标准的UITableView 但我想将其更改为看起来像 iOS 开发之外的普通表格 使其具有更多列 但只有一行 并使单元格呈方形 我考虑过制作更多的表格 每个单元格一个 然后将它们彼此相邻放置 但这不太方便 是否有一种简单的方法
  • 如何限制android ListView中文本的长度?

    我可以知道如何限制文本的长度吗listView 下面是listView from wechat 这是我的listView 如何限制文本的长度 使其显示如下这是 工作描述 请 任何帮助将不胜感激 如果您设置TextView二者皆是单线 htt
  • 如何在 Eclipse 中查明某个方法是直接还是间接从另一个方法调用?

    如何在 Eclipse 中查明某个方法是否可能从另一个方法调用或可访问 直接或间接 假设我想重构A one 这可能会受到副作用的负面影响D four 因此我想知道是否D four 可能会被调用A one 我可以看到调用了哪些方法A one
  • 在 Apps 脚本中将文本关键字替换为“分页符”元素

    我想用分页符替换特定的文本关键字 这是我尝试过的 body findText PAGE BREAK getElement appendPageBreak and body replaceText PAGE BREAK asBody appe
  • Rx Java Observable 执行直到某个条件

    我正在尝试找到一种执行可观察的方法 直到满足某些条件 考虑以下示例 myDelayedObservable createListenerObserver public Observable
  • 如何在 Firefox 插件 sdk 扩展中使用 main.js 中的 XMLHttpRequest。 (或类似的东西)[重复]

    这个问题在这里已经有答案了 我有一个 Firefox 扩展需要检查 onUnload 事件 基本上我想在用户禁用扩展时向我的服务器发送一条消息 我尝试做的是将消息发送到我的内容脚本之一 然后该脚本将调用 XMLHttpRequest 这对于
  • 在 Coq 中,重写适用于 = 但不适用于 <-> (iff)

    我在证明期间有以下内容 我需要替换normal form step t with value t因为有一个已证明的定理存在等价 H1 t1 gt t1 normal form step t1 t2 tm H2 t2 gt t2 normal
  • 在 Scala 中使用累加器映射列表的函数式方法

    我想编写简洁的代码来映 射列表 累积一个值并在输出列表中使用该值 使用递归函数和模式匹配这很简单 见下文 但我想知道是否有一种方法可以使用函数编程系列的组合器 如映射和折叠等 来做到这一点 显然 映射和折叠是不好的 除非您使用在调用外部定义
  • 固定顶栏与命名锚点

    我有一个顶栏position fixed其中还包含锚链接 a href someid jdjd a 问题在于目标放置在视口的顶部 固定顶栏后面 如何修复浏览器滚动以便目标显示在顶栏下方 据我所知 没有干净的解决方案 如果使用内联滚动条也可以
  • xcframework不包含内部框架

    我正在尝试创建一个 xcframework我正在使用的一些第三方库的文件 按照以下指示https appspector com blog xcframeworks https appspector com blog xcframeworks
  • 将输入更改为大写,光标不会跳到文本末尾

    我使用以下代码将输入值更改为大写
  • AWS 服务无法承担角色

    我有两个 AWS Cloudformation 堆栈 一个用于 IAM 角色 第二个用于创建 AWS 服务并使用 Cloudformation 将相应的角色导入其中 当部署 10 个以上服务时 其中 1 个或 2 个服务会随机出现以下错误
  • Appium XCUITest 中的代码签名证书错误

    我正在尝试使用 Appium XCUITest 实现 IOS 10 的 UI 自动化 在运行脚本时 它尝试构建 WebDriverAgent 但此时失败 我已经添加了配置文件并通过 UI 在 Xcode 中添加了帐户 但不确定 XCUITe
  • 如何使用 Espresso 测试适配器中特定位置的项目

    我正在尝试使用 Espresso 2 0 来验证给定位置的列表适配器项中的文本是否正确 但在我的一生中 我无法找出要调用的正确方法 我的适配器类型 IconRowAdapter 包含一个列表IconRow对象 每个 IconRow 有一个g
  • 识字编程

    识字编程 http en wikipedia org wiki Literate programming是一种软件开发方式 首先是文档 然后是编码 首先编写代码片段的文档 然后编写该代码片段的实现 软件源代码的视觉外观将是一个类似word的
  • AngularJS - ng-hide 与不同的 ng-controller

    这是我的问题 当我双击数组的一行时 我想让页面的几个部分消失 问题是 我不知道该怎么做 基本上 这是我的 html 文件 div div class table table class mainTable tr class tableHea
  • 全日历中的工具提示不起作用

    每个人 我正在尝试在全日历中显示事件的工具提示 但它不起作用并在控制台中显示此消息 未捕获的语法错误 意外的标记 有什么问题吗 这是我的js函数代码 calendar fullCalendar function eventAfterRend
  • TLS 连接超时(以及其他一些困难)

    我有一个 Python 中的 HTTP 客户端 需要使用 TLS 我不仅需要 建立加密连接 还可以从 远程计算机 例如证书颁发者 我需要做 与许多 HTTP 服务器的连接 通常表现不佳 所以我绝对 需要有一个超时时间 对于非 TLS 连接
  • 如何在 C# 中获取 MS Windows 7 内存的当前页面大小?

    如何在 C 中获取 MS Windows 7 内存的当前页面大小 在某些情况下 我们需要它以最佳方式分配内存 谢谢你 更新 这是一个示例代码 我对此有一些疑问byte buffer new byte 4096 Assign values t
  • Uploadify(闪存文件上传)和集成 Windows 身份验证

    我遇到了 Uploadify 的问题 希望有人能提供帮助 我已将 Uploadify 放入我的应用程序中 并且在开发中一切正常 使用 VS Web 服务器 一切正常并经过检查 直到我将应用程序部署到使用集成 Windows 身份验证的测试环