到目前为止,我发现了 3 种可能的(?)方法。没有一个看起来简单明了,还没有测试过......
- 通过 flashvars 将一些验证/验证令牌传递给 FLASH,将其用于对不受限制的服务器方法的每个请求并手动验证它。
- 从 FLASH 调用 javascript 函数,用于受限通信(我希望这样的 js 调用会像正常的 web 调用一样自动验证?)。
- 尝试以某种方式读取 .AspNet.ApplicationCookie、ASP.NET_SessionID、__RequestVerificationToken cookie 并在发送 URLRequest 时在 Flash 中使用它们。 (不知道有没有可能)。
这有什么意义吗?
真的没有简单/更好的解决方案来验证从 Flash 应用程序发出的用户请求吗?(?
编辑:
Ad.2 测试通过,用户已通过身份验证:D。实际上看起来相当不错(ExternalInterface.call(...))。使用 JS 和 AJAX 进行关键的 FLASH-ASP.NET 通信。
EDIT2:
我只是从 Flash 调用 JavaScript,然后这个 javaScript 正在使用已经过身份验证的 AJAX 与服务器通信。使用外部接口,您还可以从 javaScript 调用 Flash 函数(收到答案时)。这样通讯就完成了。
闪光灯:
public static function SendToServer(_sParam:String):void
{
ExternalInterface.call("JAVASCRIPT_FUNCTIONNAME", "TEST", _sParam);
}
//If you want to call FLASH functions from JavaScript you need to call this in FLASH:
ExternalInterface.addCallback("NAME_FOR_JAVASCTIPT_OF_FLASH_FUNCTION", FLASH_FUNCTION);
//From now this FLASH_FUNCTION will be called when you call swfobj.NAME_FOR_JAVASCTIPT_OF_FLASH_FUNCTION() in JavaScript.
JAVASCRIPT:
//You need to be able to get SWF object in flash to call its registered functions
function swfobj() {
return $("#modafswf").get(0);
}
function JAVASCRIPT_FUNCTIONNAME(mffname, mfpvalue) {
try {
$.ajax({
url: "/FlashComm/" + mffname,
data: "{ 'param': '" + mfpvalue + "' }",
dataType: "text",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
swfobj().NAME_FOR_JAVASCTIPT_OF_FLASH_FUNCTION(mffname, data);
}
});
} catch (ex) {}
}
最后是 ASP.NET:
[HttpPost]
public string TEST(string param)
{
string result = RESULT_ERROR;
result = RESULT_OK;
return result;
}