2011-09-17 119 views
2

我正在尋找使用Google的App Engine(Java)將後端提供給我正在編寫的Android消息傳遞應用程序,我剛剛開始使用GAP,但有一點經驗Java(通過Android)。如何獲得唯一的用戶名

第一次有人使用該應用程序時,它會向服務器發送一些註冊數據,這將存儲在GAE數據存儲區中,並將唯一的ID返回給手機(或者如果出現問題,則返回錯誤消息)。

因爲我看不到看起來像key = datastore.giveMeAUniqueKeydatastore.hasThisBeenUsedBefore(key)的東西,我想我將不得不生成一個隨機密鑰,看看它是否被採用(我不確定如何做到這一點是誠實的)。

任何想法(要麼回答具體問題,要麼指向有用的「入門」資源)?

謝謝。

回答

3

如果此值不安全敏感(即,它只是一個用戶ID,並且您有其他一些方法來驗證電話),只需執行插入操作並獲取新插入的實體的密鑰即可。數據存儲will assign a guarenteed-unique key如果您插入一個新的實體而不提供一個,則會自動進行。或者,您可以明確要求allocate_ids call的ID。

如果該值對安全性非常敏感(它是會話隨機數或用於身份驗證的內容),請使用SecureRandom類生成一個隨機字節序列。不要將它用作實體(如用戶對象)的鍵;如果用戶的會話受到威脅,這將阻止更改會話ID。有一個單獨的用戶ID用於此目的,並使用此安全隨機數僅用於身份驗證步驟。

請注意,如果沒有using a transaction,僅循環創建ID,測試衝突和插入是不安全的;使用應用引擎內置的ID分配系統更簡單(也更快,更便宜)。