Laravel 9 에서는 기본 미들웨어가 3가지가 있다. (미들웨어의 기본개념은 필터링와 같다)
app/Http/Kernel.php 을 보면
이들 중 이메일이 검증되었는지 확인하는 미들웨어를 찾으려면
# app/Http/Kernel.php
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
미들웨어 내부 코드를 살펴보면 $request->user() instanceof MustVerifyEmail
은 User Model을 반환하는데 기본 상태의 User 모델은 MustVerifyEmail
의 인스턴스가 아니므로 작동하지 않는다.
#app/Models/User.php
use Illuminate\Contracts\Auth\MustVerifyEmail;
class User extends Authenticatable implements MustVerifyEmail
이렇게 하면 해당 MustVerifyEmail
의 인스턴스가 되었므로 미들웨어가 작동하게 된다.
이것도 디자인 패턴 같은데, 어떤 것인지는 잘 모르겠다.
이 기능은 그전부터 그러했을 수도 있지만, Laravel이 계속 업데이트를 하는 것을 보면서 점점 간결하면서 직관적이 되어 간다고 생각이 든다.