0

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

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

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

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

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

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

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

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

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

4

2 回答 2

5

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

于 2010-07-19T10:50:52.950 回答
1

由于您使用的是objectify,因此您可以使用该方法获取字符串编码的密钥

ObjectifyService.factory().keyToString( myKey );
于 2010-07-18T14:36:20.533 回答