Laravel ID 主要自动增量替代方案

在我的应用程序中,大多数 ID(user_id、classroom_id、post_id、assessment_id 等)都是公开可用的,这意味着它们要么位于 URL 中,要么位于目录名称中。出于安全原因,我希望每个表都有 10 个字符的随机 ID,而不是自动递增的 ID。


我可以使用时间戳,但这并不是唯一的,并且添加随机数会变得更长(例如,我必须添加 4 个随机数才能每秒处理多达 10.000 个数据库插入到表中......纯粹是假设它不可扩展)。


现在我更愿意创建一个10 个字符的随机 ID,这会给我100 亿个可能的 ID 组合。所以产生重复的机会很小,长度也可以接受。


use Keygen;


$id = Keygen::numeric(10)->generate();

你觉得我的想法有道理吗?有谁知道使用 10 个字符的主 ID 是否会对我的数据库性能产生负面影响?谢谢!


富国沪深
浏览 232回答 3
3回答

HUWWW

我可以推荐三个用于 ID 生成的包。Webpatser 的 Laravel UUID 包允许为您的模型生成 UUID,设置和使用相当简单。这种类型的 id 是不可预测的,可能被认为更安全,但不能在您的数据库中排序。 GitHubVinkla 的 Laravel Hashids 包保留您当前的 id 并获得可以解密的哈希以公开混淆 id。GitHubHafael 的 Laraflake 封装了Twitter 雪花之类的 id 生成,性能好,功能更好,可以对 id 进行排序。GitHub您可以查看所有三个可用的软件包,然后选择一个,或者您可以根据这些软件包制作 DIY 解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP