如何获得唯一的用户名

时间:2011-09-17 22:15:07

标签: java google-app-engine google-cloud-datastore

我希望使用Google的App Engine(Java)为我正在撰写的Android消息应用程序提供后端,我刚刚开始使用GAP,但对Java(通过Android)有一点经验。

当有人第一次使用该应用程序时,它会向服务器发送一些注册数据,这将存储在GAE数据存储区中,并将唯一ID返回给手机(如果出现问题,则会显示错误消息)。

因为我看不到看起来像key = datastore.giveMeAUniqueKeydatastore.hasThisBeenUsedBefore(key)的东西,我想我将不得不生成一个随机密钥,看看它是否已被采用(我不确定老实说,该如何做到这一点。

任何想法(要么回答特定问题,要么指向有用的“入门”资源)?

感谢。

1 个答案:

答案 0 :(得分:3)

如果此值不是安全敏感的(即,它只是一个用户ID,并且您还有其他方法可以对手机进行身份验证),只需执行插入并获取新插入实体的密钥即可。如果您插入新实体而不提供实体,则会自动生成数据存储will assign a guarenteed-unique key。或者,您可以使用allocate_ids call明确请求ID。

如果值是安全敏感的(它是会话随机数或用于身份验证的内容),请使用SecureRandom类生成随机字节序列。不要将其用作实体(如用户对象)的键;如果用户的会话受到损害,这将排除更改会话ID。具有用于此目的的单独用户ID,并仅将此安全随机数用于身份验证步骤。

请注意,如果没有using a transaction,简单地循环创建ID,测试冲突和插入是不安全的;只需使用app引擎的内置ID分配系统,就会更容易(也更快,更便宜......)。