0

私はuploadifyのようなjsプラグインを使用しています。これは、アップローダーとしてswf(フラッシュ)を使用します(ajaxアップロードを提供するため)。ログインしている方のみアップロード操作ができます。しかし、私のWebサイトの認証はフラッシュを介して行われないため、ブラウザーが認証後に持っているように、フラッシュにはCookieがありません。

つまり、ブラウザでは私は管理者であり、フラッシュではゲストです。追加のハッシュやその他の追加機能なしで自分自身を識別するために、ブラウザで持っているのと同じフラッシュ用のCookieを設定する方法はありますか?

ヘルプ/アドバイス/ドキュメント/マニュアルへのリンクを喜んで提供します。前もって感謝します!

4

2 に答える 2

2

Javascript を使用して Cookie を設定および読み取りExternalInterface、Flash との間で値をやり取りするために使用できます。

または、 を使用SharedObjectして「Cookie」を設定/読み取り、値を Web サイトに渡すことができます ( ExternalInterface)。

于 2012-07-10T09:05:59.140 に答える
1

strah が述べたように、 と を組み合わせることでExternalInterfaceSharedObjectCookie を使用して Javascript でデータを永続化するのと同じように、Flash でデータを永続化できます。どうやってこれを行うのですか?

まず、データを保持するために 1 つ以上を使用する ActionScript コードを記述する必要がありSharedObjectsます。

//Obtain the SharedObject named "cookie", procuring a reference
//to the member Object containing its persisted data
var locusLSO:SharedObject = SharedObject.getLocal("cookie");
var lsoData:Object = locusLSO.data;
/////

//Establish a pairing in locusLSO between some key and value
lsoData["key"] = "value";

//Immediately serialize the data contained in locusLSO to its linked file
var statusStr:String = locusLSO.flush();

次に、ActionScript コードをメソッドにカプセル化し、そのメソッドを親アプリケーションの ExternalInterface の一部として登録する必要があります。

function storeData(/*param1, param2, ... */):void {/*code*/}
ExternalInterface.addCallback("storeData");

3 番目に、Actionscript アプリケーション (コード) をコンパイルし、結果の .swf ファイルを参照する要素を HTML に作成する必要があります。

次に、前述の HTML 要素が という名前の DOMElement として表されていると仮定するflashDOMElementと、DOMElement を使用してメソッドを呼び出すことができます。

flashDOMElement.storeData(/*arg1, arg2, ... */);

このすべてを行うという面倒を経験したくない場合は、BakedGoodsをチェックしてください。これは、Flash ローカル共有オブジェクトを含む、すべてのネイティブおよび一部の非ネイティブ ストレージ機能で共通のストレージ操作を実行するために使用できる統一されたインターフェイスを確立する Javascript ライブラリです。

これにより、次のような単純なコードで LSO を作成できます。

bakedGoods.set({
    data: [{key: "key", value: "value"}],
    storageTypes: ["flash"],
    complete: function(byStorageTypeRemovedItemKeysObj, byStorageTypeErrorObj){/*code*/}
});

データの取得と削除も同様に簡単です。このすべてについて私を信頼してください、私は知っているでしょう。私はそのメンテナーです:)

于 2016-07-05T00:09:21.413 に答える