Kötü olmayan e-posta onayı ile bir abonelik kayıt akışını sevgiyle nasıl oluşturduğumu burada bulabilirsiniz. Sen de yapabilirsin.
Kendi posta listenizi veya bülteninizi yönetmekle ilgileniyorsanız, e-posta adreslerini toplamak için kendi AWS kaynaklarınızda Basit Abonelik kurabilirsiniz. Bu açık kaynak API, Go'da yazılır ve AWS Lambda üzerinde çalışır. Sitenizin ziyaretçileri, bir DynamoDB tablosunda saklanan ve boş zamanlarınızda sorgulanmaya veya dışa aktarılmaya hazır olan listenize kaydolabilir.
Birisi kaydolduğunda, aboneliğini onaylamasını isteyen bir e-posta alır. "Doğrulanmış" terimini tercih etsem de buna bazen "çift kayıt" denir. Basit Abonelik, sunucusuz altyapı üzerinde çalışır ve abonelik, onay ve abonelikten çıkma isteklerini işlemek için bir AWS Lambda kullanır.
Simple SubScribe projesini, tamamen açık kaynak koduyla GitHub'da bulabilirsiniz . Kodu açmanızı ve takip etmenizi tavsiye ederim! Bu makalede, her bir oluşturma adımını, API'nin tek sorumluluk işlevlerinin arkasındaki düşünce sürecini ve buna benzer bir AWS projesi için güvenlik hususlarını paylaşacağım.
Doğrulanmamış bir e-posta kayıt işlemi basittir. Birisi e-postasını web sitenizdeki bir kutuya koyar ve ardından bu e-posta veritabanınıza gider. Bununla birlikte, size kullanıcı girdisine güvenmeme konusunda bir şey öğrettiysem , doğrulanmamış bir kayıt işlemi fikri, bilgisayar korsanlarınızı artırmalıdır. Spam, sandviçte kızartıldığında harika olabilir, ancak AWS faturanız dolduğunda eğlenceli değildir.
CAPTCHA gibi bir strateji veya bir insan mı doğrulaması için bulmaca gibi bir strateji kullanabilirsiniz, ancak bunlar potansiyel abonelerinizi geri çevirmek için yeterli sürtüşme yaratabilir. Bunun yerine, bir onay e-postası hem adres doğruluğunu hem de kullanıcı duyarlılığını sağlamaya yardımcı olabilir.
E-posta onayıyla bir abonelik akışı oluşturmak için, her mantıksal adımı karşılayan tek sorumluluk işlevleri oluşturun. Onlar:
Her aşamada, verilerin neye benzediğini ve nasıl depoladığınızı düşünün. Bu, "Birisi iki kez abone olmaya çalışırsa ne olur?" Gibi bilmecelerin üstesinden gelmeye yardımcı olabilir. hatta "Birisi sahip olmadığı bir e-postayla abone olursa ne olur?" gibi tehdit modellemesi.
Hazır? Her adımı inceleyelim ve sihrin nasıl gerçekleştiğini görelim.
Abonelik süreci mütevazı bir web formu ile başlar. Özniteliklere sahip bir form girişi , tarayıcı sayesinde
type="email" required doğrulamaya yardımcı olur . Form gönderildiğinde, Basit Abonelik aboneliği uç noktasına bir GET isteği gönderir.
Basit Abonelik, hedeflenen abonenin e-postasını içeren bir sorgu dizesiyle bu uç noktaya bir GET isteği alır. Daha sonra bir üretir
iddeğeri ve hem katar
idsizin DynamoDB masaya.
Tablo öğesi artık şu şekilde görünür:
firstname.lastname@example.org
uuid-xxxxx
Verilerinizle çalışırken, her bir işlemin amacını ve gelen bir talebi mevcut verilerle nasıl karşılaştırabileceğinizi düşünün.
Örneğin, birisi aynı e-posta adresi için daha sonra bir abonelik talebinde bulunsa, bunu nasıl ele alırdınız? "Yenisiyle yeni bir satır öğesi oluştur" diyebilirsiniz
id. Ancak, sunucusuz uygulama veritabanınız talep hacmine göre ödendiğinde bu en iyi strateji olmayabilir.
Yana DynamoDB fiyatlandırma size tablolara okuma ve yazma ne kadar veri bağlıdır, bu fazlalık verilere kazık önlemek için avantajlı bu.
Bunu akılda tutarak, yeni bir satır eklemek yerine bir güncelleme yaparak aynı e-posta için abonelik taleplerini ele almak akıllıca olacaktır. Basit Abonelik, aslında bir veritabanı öğesi eklemek veya güncellemek için aynı işlevi kullanır. Bu genellikle "güncelleme veya ekleme" olarak adlandırılır.
Yinelenen bir abonelik talebi alındığında, veritabanı öğesi
idve
timestampgeçersiz kılınır, bu da mevcut veritabanı kaydını günceller ve tablonuzun yinelenen isteklerle dolmasını önler.
Formu gönderdikten sonra, hedeflenen abone SES'ten bir bağlantı içeren bir e-posta alır. Bu bağlantı tablodan ve kullanılarak oluşturulur
idaşağıdaki biçimi alır:
<BASE_URL><VERIFY_PATH>/?email@example.com&id=uuid-xxxxx
Bağlantıyı ziyaret etmek, doğrulama uç noktanıza sorgu dizesinde
id. Bu sefer, hem gelen karşılaştırmak önemlidir
idveritabanı kaydına değerleri. Bu, onay e-postasının alıcısının isteği başlattığını doğrular.
Doğrulama uç noktası, bu değerlerin veritabanınızdaki bir öğeyle eşleşmesini sağlar, ardından ayarlamak
confirmiçin başka bir güncelleme işlemi gerçekleştirir
trueve zaman damgasını günceller. Öğe artık şöyle görünür:
firstname.lastname@example.org
uuid-xxxxx
Artık e-posta listenizi oluşturmak için tablonuzu sorgulayabilirsiniz. E-posta gönderme çözümünüze bağlı olarak, bunu manuel olarak, başka bir Lambda ile veya hatta komut satırından yapabilirsiniz.
İstenen aboneliklere ilişkin veriler (nerede
confirmolduğu
false), onaylanmış aboneliklerin yanında tabloda depolandığından, e-posta adreslerinin gönderilmesi için sorgulama yapılırken bu verileri farklılaştırmak önemlidir. Sen nereye yalnızca e-postaları dönmelerini sağlamak isteyeceksiniz
confirmolduğunu
true.
Bir e-posta adresini doğrularken benzer şekilde, Basit Abone Ol, bir e-posta adresinin aboneliğini iptal etmek için DynamoDB tablonuzdan bir öğeyi silen işlevin argümanları olarak
id. Kişilerin kendilerini listenizden çıkarmasına izin vermek için, gönderdiğiniz her e-postada, kendi
idabonelikten çıkma uç noktasına bir sorgu dizesi olarak içeren bir URL sağlamanız gerekir . Şöyle bir şeye benzeyecektir:
<BASE_URL><UNSUBSCRIBE_PATH>/?email@example.com&id=uuid-xxxxx
Abonelerinize, herhangi bir insan müdahalesi gerekmeden kendilerini listenizden otomatik olarak çıkarmaları için bir yöntem sağlamak, size emanet edilen verileri ele almaya yönelik etik ve saygılı bir felsefenin parçasıdır.
Başkalarının verilerini kabul etmeye karar verdiğinizde, onunla ilgilenmek sizin sorumluluğunuz haline gelir. Bu, inşa ettiğiniz her şeye uygulanabilir. Basit Abone Olma için bu, veritabanınızın güvenliğini sağlamak ve tablonuzu periyodik olarak kısaltmak anlamına gelir.
E-posta adreslerini istinat önlemek için
confirmolan
falsebelirli bir zaman dilimi geçmiş, bir temizlik işlevini kurmak için iyi bir fikir olacağını düzenli bir programla çalışır. Bu, manuel olarak, bir AWS Lambda işleviyle veya komut satırı kullanılarak gerçekleştirilebilir.
Nerede veritabanı öğeleri bulmak, temizlemek için
confirmolduğu
falseve
timestampzaman içinde belirli bir noktaya daha eski. Kullanım durumunuza ve talep hacimlerinize bağlı olarak, temizlemeyi seçtiğiniz sıklık değişecektir.
Ayrıca kullanım durumunuza bağlı olarak verilerinizin yedeklerini saklamak isteyebilirsiniz. Veri bütünlüğü konusunda özellikle endişeleriniz varsa, DynamoDB için İsteğe Bağlı Yedekleme veya Zaman İçinde Kurtarma'yı keşfedebilirsiniz.
Kendi abone listenizi oluşturmak, güçlendirici bir çaba olabilir! Bir haber bülteni başlatmak, yeni içerik için bildirimler göndermek veya işinizle ilgili bir topluluk oluşturmak niyetinde olun, benden size gelen bir e-postadan daha kişisel veya doğrudan bir şey yoktur.
Bugün Basit Abone Ol ile abone tabanınızı oluşturmaya başlamanızı tavsiye ederim! Çalışmalarımın çoğu gibi, açık kaynak ve kişisel kullanımınız için ücretsiz. GitHub deposundaki koda dalın veya resmi web sitesinde daha fazla bilgi edinin .
Salesforce, verileri yapılandırmak için harikadır… çok fazla veri. Tüm verileri parçalara ayırarak bir sObjects kitaplığı oluşturmak için zaman harcadınız, ancak birden çok sObjects arasında arama yapmak istediğinizde ne olur? Salesforce Nesne Arama Dili'nin (SOSL) devreye girdiği yer burasıdır.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.
Saldırganların herkese açık GraphQL arabiriminizi kullanarak sitenizi nasıl kazıyabileceğini veya hizmet reddi saldırıları gerçekleştirebileceğini öğrenin. Bunu dört yoldan biriyle yapabilirler: yürütmek için tek bir büyük sorguyu dikkatlice oluşturarak, ilgili verileri getirebilecek çok sayıda paralel sorgu yazarak, arka arkaya çok sayıda sorgu göndermek için toplu istekleri kullanarak ve son olarak çok sayıda istek göndererek.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Tom Hiddleston, zayıf ekran testleri nedeniyle Marvel'ın Loki'nin kaderini 'Thor: The Dark World'de değiştirmesi hakkındaki düşüncelerini paylaşıyor.
Prenses Anne'nin kızı Zara Tindall ve kocası Mike Tindall bu yıl 10. evlilik yıldönümlerini kutluyorlar.
Golnesa 'GG' Gharachedaghi, eski 'RHOC' yıldızı 'Shahs of Sunster' yıldızını bilmediğini iddia ettikten sonra Kelly Dodd'u alkışlıyor.
Birçok izleyici Mobius M. Mobius'un kaç yaşında olduğunu merak ediyor ve 'Loki' yönetmeni Kate Herron'un bir ipucu olabilir.
Gerçek şu ki, bu mega sellerden birini vurma şansınız her yıl aynıdır: yüzde 1.
Laboratuvarda yaratılan, sürdürülebilir ve çevresel etkisi azaltılmış yeni bir evcil hayvan mamaları dönemi geliyor. Ama evcil hayvanlar - ve onların insanları - bundan hoşlanacak mı?
O mükemmel kahve için dünyayı mı arıyorsunuz? Belki de kendi kahve çekirdeklerinizi kavurmanın güzel sanatlarını ve bilimini öğrenmenin yolu budur.
Yaratılış'ta sadece kısa bir kez ortaya çıkıyor, ancak İsa Mesih'in habercisi olarak görülüyor. O gerçekte neydi ve İsa ile nasıl ilişkilendirildi?
Bu adamların sonunu görmedin. Eski deyişi bilirsiniz: “Oyunları bu yüzden oynuyorlar.
Amerikan bayrağı..
Manuel Neuer'in gökkuşağı kaptanının kol bandı UEFA tarafından araştırılıyor. Tüm Süper Lig fiyaskosu insanları UEFA'nın yanında yer almak gibi çok garip ve rahatsız edici bir duruma soktuysa, UEFA'nın her zaman bu sermayeyi israf etmek için elinden gelen her şeyi yapacağından emin olabilirler.
Ozzie Fletcher, Brooklyn'deki bir Cuma töreni sırasında Mor Kalp ile sabitlendi. ABD'de görev yaparken yaptığı çeşitli fedakarlıklara rağmen.
Joanna Gaines, Babalar Günü'nde kızları Ella ve Emmie'nin saçlarını örmesine izin verdiği tatlı bir Babalar Günü yazısında kocası Chip'e "Seni kesinlikle seviyoruz" diye yazdı.
Alyssa Scott, Instagram Hikayesine, Babalar Günü için Nick Cannon ve kendisinin bir annelik fotoğrafını paylaşarak, "Bugün sizi kutluyoruz" dedi.
Bir kaynak PEOPLE'a "Basketbol sezonu boyunca LA'den çok zaman geçirdi" dedi.
Sophie Turner, geçen Temmuz ayında kızı Willa'yı ağırladıktan sonra kocası Joe Jonas'ın ilk Babalar Günü'ne "Babalar Günü kutlu olsun" diye yazdı.