最近我不得不在 Laravel 7 实现 通用唯一识别码 ( UUIDs ),并遇到一些问题。我希望这帖子可为其他正在做相同事情的人解惑。
使用 UUIDs 的高级理由
A) 它们从你的 统一资源定位符 移除编号的 身份识别号 ,故用户不能看到你的应用已创建多少确定的对象。例如:
https://myapp.com/api/users/5
对比:
https://myapp.com/api/users/0892b118-856e-4a15-af0c-66a3a4a28eed
B) 它们让 身份识别号 远难于猜测。这有益于安全性,但我们可能应当实现其他技术以防范之。
作为主键实现 UUIDs
如何改变数据库迁移
首先,在数据库迁移中,你要将当前自动递增的 ID 字段替换为 UUIDs 。你还可以遵循以下方法:保留自动递增 ID 并将 UUID 作为表中的附加字段,在用户展示 URL 时使用 (在这种情况下,你将 ID 隐藏到模型中),但这不是我们能在这里做的。 让我们看看假设的 employees 表是什么样子的。
public function up()
{
Schema::create('employees', function (Blueprint $table) {
$table->uuid('id')->primary;
$table->string('name');
$table->string('email')->unique();
$table->string('work_location')->