为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
富国沪深 2021-07-01 09:43:36
在我的应用程序中,大多数 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 是否会对我的数据库性能产生负面影响?谢谢!
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

我可以推荐三个用于 ID 生成的包。

  1. Webpatser 的 Laravel UUID 包
    允许为您的模型生成 UUID,设置和使用相当简单。这种类型的 id 是不可预测的,可能被认为更安全,但不能在您的数据库中排序。 GitHub

  2. Vinkla 的 Laravel Hashids 包
    保留您当前的 id 并获得可以解密的哈希以公开混淆 id。GitHub

  3. Hafael 的 Laraflake 封装了
    Twitter 雪花之类的 id 生成,性能好,功能更好,可以对 id 进行排序。GitHub

您可以查看所有三个可用的软件包,然后选择一个,或者您可以根据这些软件包制作 DIY 解决方案。


查看完整回答
反对 回复 2021-07-02
  • 3 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信