MVC5 aspnet.identity + FLASH用户身份验证

时间:2014-01-02 19:10:13

标签: actionscript-3 flash authentication asp.net-mvc-5

我正在寻找示例或想法如何使用内部帐户和外部登录(Facebook等)在MVASH中使用MVC5 ASP.NET身份管理用户身份验证。

我知道有简单会员的例子,并且FLASH自动身份验证存在问题。但我对MVC5一无所知:(。

身份验证本身将由ASP.NET页面进行。我希望/ /一个FLASH应用程序能够在进行服务器请求时使用经过身份验证的会话。

Flash应用程序用于编辑某些数据并保存到服务器端的数据库(MVC5),因此它必须是安全的,并且仅允许某些经过身份验证的用户使用。

在MVC5页面上放置的FLASH应用中对用户进行身份验证的最安全方法是什么?

1 个答案:

答案 0 :(得分:1)

到目前为止,我发现了3种可能的(?)方法。他们似乎都不容易和清楚,并没有测试它们......

  1. 通过flashvars将一些验证/验证令牌传递给FLASH,将其用于每个请求不受限制的服务器方法并手动验证。
  2. 从FLASH调用javascript函数,用于限制通信(我希望这些js调用会自动验证为正常的Web调用吗?)。
  3. 尝试以某种方式读取.AspNet.ApplicationCookie,ASP.NET_SessionID,__ RequestVerificationToken Cookie,并在发送URLRequest时在Flash中使用它们。 (不知道是否可能)。
  4. 这有什么意义吗?

    用于验证Flash应用程序的用户请求是否真的没有简单/更好的解决方案;(?

    编辑: Ad.2测试通过,用户通过身份验证:D。实际上看起来相当不错(ExternalInterface.call(...))。使用JS和AJAX进行Crucial FLASH-ASP.NET通信。

    EDIT2:

    我只是从Flash调用JavaScript,然后这个javaScript使用已经过身份验证的AJAX与服务器通信。使用外部接口,您还可以从javaScript调用Flash函数(收到答案时)。沟通就完成了。

    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.
    

    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: //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) {} }