Laravel의 URL에서 UUID를 사용하는 방법
내 previous post 에서 보안 및 기타 문제로 인해 기본 증분 ID를 노출하지 말아야 하는 이유를 설명했습니다. 운 좋게도 이 문제에 대한 몇 가지 솔루션이 있습니다: 슬러그 및 UUID.
슬러그에 대한 자세한 내용을 보려면 여기read more를 참조하세요.
이 게시물에서는 Laravel을 사용하여 UUID를 구성하는 방법을 보여 드리겠습니다. 그러면 다음과 같은 URL을 얻을 수 있습니다.
http://www.example.org/orders/065e9fb3-6bec-494c-9917-4ab8e71750d4
http://www.example.org/users/d3835dda-e08f-4ed5-baff-756d62a749b2
http://www.example.org/images/avatar-d54a923b-c5d4-4294-8033-a221a57ef361.jpg
마이그레이션
먼저 마이그레이션에
uuid
열을 추가해야 합니다. Laravel에는 우리가 사용할 수 있는 UUID column이 있습니다.// database/migrations/create_posts_table.php
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->uuid('uuid')->unique(); // <!-- Add the UUID column in your migration
$table->string('title');
$table->text('body');
$table->timestamps();
});
모델
다음으로 모델(예: 게시물)이 생성될 때마다 UUID를 자동으로 할당하려고 합니다. 우리 모델의
boot
모델에서 그렇게 할 수 있습니다.// app/Models/Post.php
use Illuminate\Support\Str;
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->uuid = (string) Str::uuid();
});
}
공장
모델 팩토리를 사용하여 테스트 모델을 빠르게 생성하는 경우 팩토리를 사용할 때도
boot
메서드가 실행되기 때문에 아무 것도 추가할 필요가 없습니다.라우팅
마지막 단계는 route 파일을 업데이트하는 것입니다.
routes/web.php
파일에서 Route Model Binding을 사용할 때마다 끝에 :uuid
를 추가하십시오.// routes/web.php
Route::get('/posts/{post:uuid}', [PostController::class, 'show'])
->name('posts.show');
이제 Laravel은 라우팅을 위해 자동으로 UUID 열을 사용합니다.
URL
URL을 사용하는 경우 모든 곳에서 경로를 업데이트해야 합니다. 예를 들어:
// resources/views/posts/index.blade.php
<ul>
@foreach($posts as $post)
<li>
<a href="{{ url('/posts/' . $post->uuid) }}">
{{ $post->title }}
</a>
</li>
@endforeach
</ul>
경로 도우미
route
도우미 메서드를 사용하는 경우 아무 것도 변경할 필요가 없습니다! 예를 들어:// resources/views/posts/index.blade.php
<ul>
@foreach($posts as $post)
<li>
<a href="{{ route('posts.show', $post) }}">
{{ $post->title }}
</a>
</li>
@endforeach
</ul>
결론
보시다시피, Laravel을 사용하면 UUID를 사용하고 증가하는 ID를 숨기기가 매우 쉽습니다. 이 게시물이 마음에 드셨기를 바라며, 마음에 드셨다면 아래에서 제 뉴스레터를 구독하실 수 있습니다.
Reference
이 문제에 관하여(Laravel의 URL에서 UUID를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jeroenvanrensen/how-to-use-uuids-in-urls-in-laravel-1ja7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)