2011-09-17 9 views
2

私は現在作成しているAndroidのメッセージングアプリケーションにバックエンドを提供するためにGoogleのApp Engine(Java)を使用したいと考えています.GAPから始めていますが、 Java(Android経由)。一意のユーザー名を取得する方法

初めてアプリケーションを使用すると、サーバーにいくつかのサインアップデータが送信され、GAEデータストアに保存され、一意のIDが返されます(壊れた場合はエラーメッセージが表示されます)。

key = datastore.giveMeAUniqueKeyまたはdatastore.hasThisBeenUsedBefore(key)のようなものは見えません。私はランダムな鍵を生成して、それが撮影されているかどうかを確認する必要があると思います(正直であるように)。

任意のアイデア(特定の質問への回答か、有用な「スタートガイド」リソースへのポインタ)?

ありがとうございました。

答えて

3

この値がセキュリティに敏感でない場合(つまり、ユーザーIDだけで、電話を認証する方法がある場合)、挿入して新しく挿入されたエンティティのキ​​ーを取得するだけです。新しいエンティティを提供せずに挿入すると、データストアwill assign a guarenteed-unique keyが自動的に挿入されます。また、allocate_ids callで明示的にIDを要求することもできます。

値がセキュリティ上重要な場合(セッションナンスまたは認証に使用されるもの)は、SecureRandomクラスを使用してランダムなバイト列を生成します。これをユーザーオブジェクトなどのエンティティのキ​​ーとして使用しないでください。これにより、ユーザーのセッションが侵害された場合にセッションIDを変更できなくなります。その目的のために別のユーザーIDを使用し、この認証されていないナンスを認証ステップのためだけに使用します。

IDをループするだけで競合をテストし、挿入することは安全でないことに注意してください。using a transaction;アプリのエンジンに組み込まれたID割り当てシステムを使用するだけで簡単に(しかも高速かつ安価に)できます。

関連する問題