expires linkin geçerlilik süresi; signature ise linke özel token. Bu ikisi güvenlik açısından linkin size özel olmasını sağlıyor. Herhangi birinde değişiklik yaparsanız link çalışmaz çünkü birçok şey kullanılarak bu signature oluşturuluyor.
signature şeklinde isimlendirilen token ise HMAC ile sha256 kullanılarak rastgele 40 karakterlik bir ifade ve uygulama anahtarınızın (APP_KEY) bir parçası key olacak şekilde kullanılarak oluşturulan bir hash. Hmac kütüphanesi Python'da da olduğu için aynı şekilde yapabilirsiniz:
Laravel'de şu şekilde:
$key = $this->app['config']['app.key'];
if (Str::startsWith($key, 'base64:')) {
$key = base64_decode(substr($key, 7));
}
$token = hash_hmac('sha256', Str::random(40), $key);
Daha sonra veritabanında email, expires ve token kontrol ediliyor. Token kontrol edilirken dışarıdan gelen == veritabanındaki şeklinde değil elbette Hash::check() ile kontrol ediliyor.