2017-03-14 14 views
0

私は3Dデータを扱うためのWebアプリケーションを構築しており、各ユーザーに属する3Dデータをレンダリングしたいと考えています。 3Dファイル(.obj、.mtl、pngなど)はGCSに保存されており、ユーザーは自分の3Dファイルにしかアクセスできません。Google Cloud StorageのThree.jsでホストされているobjファイルとmtlファイルをロード

私は現在、three.jsを使用して3dファイルをレンダリングしようとしていますが、OBLoaderとMTLLoaderを使用してファイルをロードする良い方法を見つけることはできません。サーバーから静的コンテンツとしてファイルを提供すると、ロードとレンダリングが正常に機能しますが、GCSに格納されている非公開ファイルを読み込む方法が見つかりません。

私は問題が私のMTLファイルは、通常、このようになっていることである静的ファイルに

const mtlFile = "test.mtl"; 
const objFIle = "test.obj"; 
var mtlLoader = new THREE.MTLLoader(); 
mtlLoader.load(mtlFile, function(materials) { 
    materials.preload(); 
    var objLoader = new THREE.OBJLoader(); 
    objLoader.setMaterials(materials); 
    ObjLoader.load(objFile, function (object) { 
     object.position.z = 40; 
     scene.add(object); 
    }, onProgress, onError); 
}); 

をロードするために、このコードを使用しています:それはtest.pngと呼ばれるファイルを指す。すなわち

newmtl default 
Ka 1.00 1.00 1.00 
Kd 1.00 1.00 1.00 
Ks 0.00 0.00 0.00 
Ns 20.00 
illum 2 

newmtl test 
Ka 1.00 1.00 1.00 
Kd 1.00 1.00 1.00 
Ks 0.00 0.00 0.00 
Ns 20.00 
illum 2 
map_Ka test.png 
map_Kd test.png 

。基本パスを設定することができます。もし私がここで動作するURL http://example.com/test.pngを使ってファイルを提供できれば。

ただし、ファイルを作成したユーザーのみがファイルにアクセスできるようにしたいとします。私はきれいに再生する方法を見つけることができません

https://storage.googleapis.com/test-bucket/test.png?GoogleAccessId=blajlakdsjflasjdflkj&Expires=14954&Signature=V92B0 ........

:私はGCSでtest.pngを主催している場合、私はこのようになります署名のリンクを得ることができますOBJ/MTLローダー

だから、どのようにこれを解決するためのヒント?ユーザーにのみ接続されているファイルを処理するファイルプロキシを作成する必要がありますか?

Btw。自分のユーザーデータベースと認証をホストしているので、ユーザーのGoogleアカウントに接続していません。

答えて

0

理想的なセキュリティのために、プロキシがニーズに最も適しているかもしれません。実際にすべてのデータをプロキシする必要はありません。多分three.jsがリダイレクトをうまく処理しているのでしょうか?署名されたURLにリダイレクトを発行できます。

ただし、これらのオブジェクトのプライバシーをモデル化する方法によって異なります。事実上推測が不可能な長すぎるランダムな名前をこれらのオブジェクトすべてに与えるだけであれば、悪意のある人物がオブジェクト名を知ることができない限り、セキュリティの問題はほとんど解決されています。それは、精巧な余分なサービスを構築する必要なく、すぐに問題を解決します。

もちろん、セキュリティモデルは複雑です。あなたはアクセスを取り消す必要性に気をつけますか?ユーザーがオブジェクトにアクセスできる期間を制限できる必要がありますか?ユーザーはオブジェクトへのアクセスを共有できるはずですか?私はあなたのケースでこれらの質問に対する答えを知らない。しかし、長くて、HTTPSを介して匿名でアクセスされる名前は、それらの多くにとって十分かもしれません。

関連する問題