为服务媒体项目生成密钥的最佳实践(照片,mp3,文档等)

时间:2010-07-18 07:54:22

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

我正在制作P2P媒体共享功能,用户可以与他人共享文件(图像,mp3等)。当用户与另一个共享文件时,我只需向他们发送该文件的链接即可。链接看起来像:

http://www.domain.com/file?q=unique_key

现在,unique_key必须是字母数字且不易猜测,所以我打算使用文件记录的编码密钥。

在我之前的Python GAE应用程序中这很容易,但是在我的新Java应用程序中,我无法获得此Key值,我得到的是一个Long(数字)ID。

My Entity有一个名为ID的字段,它是Long,但在我的GAE管理控制台中有一个实体编码的密钥,它是字母数字,我希望这对我数据库中的每条记录都是唯一的。那么如何访问呢?

我正在使用Objectify,当我创建一个像这样的新密钥时

Key myKey = new Key(FileEntity.class,entityID);

myKey是一个包含一些文本的字符串,但它是我正在寻找的uniqye字母数字ID。

对不起我的模糊问题,请帮助。

2 个答案:

答案 0 :(得分:5)

编码的字符串键 很容易猜到 - 它们是包含应用ID,种类名称和ID的编码协议缓冲区。如果您需要不易猜测的值,我建议生成UUID,并将其用作键名(字符串键)。

答案 1 :(得分:1)

由于您使用的是objectify,因此可以使用

方法获取字符串编码的密钥
ObjectifyService.factory().keyToString( myKey );