Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> อีเมล

ปรับปรุงการตรวจสอบสิทธิ์ผู้ใช้ Flask ด้วยบริการตรวจสอบความถูกต้องของอีเมล

ปรับปรุงการตรวจสอบสิทธิ์ผู้ใช้ Flask ด้วยบริการตรวจสอบความถูกต้องของอีเมล

ในโลกดิจิทัลปัจจุบัน การรักษาความปลอดภัยออนไลน์มีความสำคัญอย่างยิ่ง และการตรวจสอบสิทธิ์ผู้ใช้ก็เป็นส่วนสำคัญของการรักษาความปลอดภัย

การตรวจสอบสิทธิ์ผ่านอีเมลเป็นหนึ่งในวิธีการลงทะเบียนและเข้าสู่ระบบที่ได้รับความนิยมและใช้กันอย่างแพร่หลาย แต่ก็ไม่น่าเชื่อถือเสมอไป เนื่องจากผู้ใช้สามารถป้อนที่อยู่อีเมลปลอมหรือไม่ถูกต้องระหว่างการลงทะเบียนได้ ซึ่งอาจนำไปสู่ความเสี่ยงด้านความปลอดภัยและการฉ้อโกงได้ นี่คือจุดที่บริการตรวจสอบอีเมลมีประโยชน์

ในบทช่วยสอนนี้ คุณจะใช้บริการตรวจสอบอีเมลเพื่อช่วยคุณทำให้กระบวนการตรวจสอบอีเมลของคุณเป็นอัตโนมัติในระหว่างการลงทะเบียนผู้ใช้โดยตรวจสอบข้อมูลการติดต่อ

API จะตรวจสอบไวยากรณ์ โดเมน และกล่องจดหมายของที่อยู่อีเมล และยังสามารถตรวจจับอีเมลที่ใช้แล้วทิ้งและมีความเสี่ยงได้อีกด้วย

ด้วยการรวม API นี้เข้ากับแอปพลิเคชันของคุณ คุณสามารถมั่นใจได้ว่าเฉพาะที่อยู่อีเมลที่ถูกต้องและเป็นของแท้เท่านั้นที่จะถูกนำมาใช้ในการลงทะเบียนผู้ใช้ ซึ่งจะช่วยเพิ่มความปลอดภัยให้กับแอปพลิเคชันของคุณ

ข้อกำหนดเบื้องต้น

ก่อนที่คุณจะเริ่มต้นบทช่วยสอน ตรวจสอบให้แน่ใจว่าคุณได้ปฏิบัติตามข้อกำหนดต่อไปนี้:

  • ความรู้เกี่ยวกับการทำงานของ Python
  • ติดตั้ง Python 3.8+ บนระบบของคุณแล้ว
  • ความรู้พื้นฐานเกี่ยวกับ Flask, พิมพ์เขียวของ Flask และคำขอ

วิธีการตั้งค่าสภาพแวดล้อมเสมือนจริง

ก่อนที่คุณจะเริ่มเขียนโค้ด คุณจะต้องตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งเครื่องมือและไลบรารีที่จำเป็นทั้งหมดแล้ว เพื่อให้แน่ใจว่าคุณมีสภาพแวดล้อมที่สะอาดและแยกออกจากกัน คุณจะต้องสร้างสภาพแวดล้อมเสมือนโดยใช้ 03 .

สร้างไดเร็กทอรีโปรเจ็กต์และนำทางไปยังไดเร็กทอรีในเทอร์มินัล:

mkdir email-validation
cd email-validation

สร้างสภาพแวดล้อมเสมือนชื่อ 14 โดยใช้คำสั่งต่อไปนี้:

python -m venv env

ตอนนี้ Python มาพร้อมกับ 29 ที่ติดตั้งไว้ล่วงหน้าแล้ว ไลบรารีเพื่อสร้างสภาพแวดล้อมเสมือนจริง

เปิดใช้งานสภาพแวดล้อมเสมือนดังนี้:

source env/bin/activate

หมายเหตุ:หากคุณใช้ Windows คุณจะต้องใช้ 36 เพื่อเปิดใช้งานสภาพแวดล้อม

คุณควรเห็น 46 ในพรอมต์เทอร์มินัลของคุณ ซึ่งระบุว่าสภาพแวดล้อมเสมือนถูกเปิดใช้งานแล้ว

การตรวจสอบอีเมลเป็นกระบวนการที่จำเป็นสำหรับเว็บแอปพลิเคชันใดๆ ที่ต้องมีการตรวจสอบสิทธิ์ผู้ใช้ และมีวิธีดำเนินการหลายวิธี

วิธีหนึ่งคือการใช้บริการตรวจสอบอีเมล เช่น emailvalidation.io API นี้ช่วยให้นักพัฒนาสามารถตรวจสอบที่อยู่อีเมลได้โดยการตรวจสอบว่าถูกต้องทางไวยากรณ์หรือไม่ มีโดเมนอยู่หรือไม่ และกล่องจดหมายสามารถรับข้อความได้หรือไม่

API เสนอแผนการกำหนดราคาที่หลากหลายเพื่อให้เหมาะกับความต้องการที่แตกต่างกัน แผนฟรีช่วยให้นักพัฒนาสามารถตรวจสอบอีเมลได้มากถึง 100 ฉบับ ซึ่งน่าจะเพียงพอสำหรับการทดสอบของเรา แผนแบบชำระเงินเริ่มต้นที่ $9.99 ต่อเดือนและเสนอคำขอเพิ่มเติม คุณสมบัติเพิ่มเติม และเวลาตอบสนองที่เร็วขึ้น

ในส่วนนี้ คุณจะเขียนฟังก์ชัน Python ที่ส่งคำขอ GET ไปยังตำแหน่งข้อมูลของ API และส่งที่อยู่อีเมลเพื่อตรวจสอบความถูกต้องเป็นพารามิเตอร์

ในการตรวจสอบคำขอ API คุณจะต้องส่งคีย์ API พร้อมกับคำขอด้วย ก่อนดำเนินการต่อ คุณต้องสร้างบัญชีใน emailvalidation.io เพื่อรับคีย์ API เมื่อคุณสร้างบัญชีแล้ว คุณจะถูกเปลี่ยนเส้นทางไปยังแดชบอร์ด คล้ายกับที่แสดงด้านล่าง คีย์ API อยู่ในพื้นที่ที่ไฮไลต์สีดำ

ปรับปรุงการตรวจสอบสิทธิ์ผู้ใช้ Flask ด้วยบริการตรวจสอบความถูกต้องของอีเมล

หากต้องการส่งคำขอ GET คุณจะต้องติดตั้ง 55 ไลบรารีในสภาพแวดล้อมเสมือนของคุณ:

pip install requests

จากนั้นสร้าง 68 ไฟล์และเพิ่มรหัสต่อไปนี้ที่นั่น:

import requests
from requests.structures import CaseInsensitiveDict
def is_valid(email: str):
 url = f"https://api.emailvalidation.io/v1/info?email={email}"
 headers = CaseInsensitiveDict()
 headers["apikey"] = "your-api-key-here"
 response = requests.get(url, headers=headers)
 return response.json()
print(is_valid("support@emailvalidation.io"))
print(is_valid("venip42579@jdsdhak.com"))

78 ฟังก์ชั่นรับที่อยู่อีเมลเป็นอาร์กิวเมนต์และสร้าง URL ด้วยที่อยู่อีเมลเพื่อเรียก emailvalidation.io API 82 คลาสจาก 96 โมดูลใช้เพื่อสร้างพจนานุกรมพร้อมคีย์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เพื่อตั้งค่าคีย์ API ในส่วนหัวของคำขอ จากนั้นคุณจะส่งคืนการตอบสนอง JSON จากฟังก์ชัน

สุดท้าย คุณเรียก 101 ทำงานสองครั้งด้วยที่อยู่อีเมลที่แตกต่างกันเพื่อสาธิตวิธีที่ฟังก์ชันสามารถตรวจสอบทั้งที่อยู่อีเมลที่ถูกต้อง (112 ) และที่อยู่อีเมลไม่ถูกต้อง (121 ).

เอาท์พุต:

{
 "email":"support@emailvalidation.io",
 "user":"support",
 "tag":"",
 "domain":"emailvalidation.io",
 "smtp_check":true,
 "mx_found":true,
 "did_you_mean":"",
 "role":true,
 "disposable":false,
 "score":0.64,
 "state":"deliverable",
 "reason":"valid_mailbox",
 "free":false,
 "format_valid":true,
 "catch_all":"None"
}
{
 "email":"venip42579@jdsdhak.com",
 "user":"venip42579",
 "tag":"",
 "domain":"jdsdhak.com",
 "smtp_check":false,
 "mx_found":false,
 "did_you_mean":"",
 "role":false,
 "disposable":false,
 "score":0.64,
 "state":"undeliverable",
 "reason":"invalid_mx",
 "free":false,
 "format_valid":true,
 "catch_all":"None"
}

คุณสามารถเรียนรู้เกี่ยวกับคีย์ต่างๆ ได้ในคำตอบที่นี่ หากต้องการตรวจสอบว่าที่อยู่อีเมลถูกต้องหรือไม่ถูกต้องตามการตอบสนอง JSON จาก emailvalidation.io คุณควรตรวจสอบช่องต่อไปนี้:

  1. 134 :ถ้า 144 ที่อยู่อีเมลมีรูปแบบที่ถูกต้อง ถ้า 157 ที่อยู่อีเมลไม่ถูกต้อง
  2. 161 :ถ้า 171 พบระเบียน MX อย่างน้อยหนึ่งรายการสำหรับโดเมน ถ้า 183 โดเมนไม่ถูกต้อง
  3. 195 :ถ้า 204 ที่อยู่อีเมลมีกล่องจดหมายที่ถูกต้อง ถ้า 210 กล่องจดหมายไม่ถูกต้อง
  4. 223 :สถานะปัจจุบันของที่อยู่อีเมล ค่าอาจเป็น "ส่งมอบได้" หรือ "ไม่สามารถส่งมอบได้"

ดังนั้น คุณสามารถแก้ไข 236 ได้ ฟังก์ชั่นเพื่อส่งคืนการตอบสนองแบบบูลีนแทนวัตถุ JSON ดังต่อไปนี้:

import requests
from requests.structures import CaseInsensitiveDict
def is_valid(email: str):
 url = f"https://api.emailvalidation.io/v1/info?email={email}"
 headers = CaseInsensitiveDict()
 headers["apikey"] = "nUH1hmV24lEwX1TIXmsgRPRRZw0L0NuOeHrdMp78"
 response = requests.get(url, headers=headers)
 if response.status_code == 200:
 json_resp = response.json()
 format_valid = json_resp["format_valid"]
 mx_found = json_resp["mx_found"]
 smtp_check = json_resp["smtp_check"]
 state = json_resp["state"]
 return format_valid and mx_found and smtp_check and state == "deliverable"
 return False
print(is_valid("support@emailvalidation.io"))
print(is_valid("venip42579@jdsdhak.com"))

เอาท์พุต:

True
False

ในส่วนที่กำลังจะมาถึง คุณจะใช้ฟังก์ชันนี้เพื่อตรวจสอบอีเมลระหว่างการลงทะเบียนผู้ใช้

วิธีการตั้งค่าการตรวจสอบสิทธิ์ผู้ใช้ขั้นพื้นฐานใน Flask

ในส่วนนี้ คุณจะได้ทำตามขั้นตอนต่างๆ เพื่อตั้งค่าการตรวจสอบสิทธิ์ผู้ใช้ขั้นพื้นฐานใน Flask คุณจะใช้โค้ดจากบทความก่อนหน้าของฉันซึ่งฉันได้อธิบายวิธีการใช้การตรวจสอบสิทธิ์ผู้ใช้ขั้นพื้นฐานแล้ว

คุณสามารถเริ่มต้นด้วยการดึงโค้ดจากที่เก็บ GitHub ไปที่ 240 โฟลเดอร์:

git init
git remote add origin https://github.com/ashutoshkrris/Flask-User-Authentication.git
git pull origin main

หมายเหตุ:คำสั่ง 254 จะไม่ทำงานในกรณีนี้เนื่องจากไดเร็กทอรีของคุณไม่ว่างเปล่า

ต่อไปคุณจะเห็น 263 ไฟล์ที่มีการขึ้นต่อกันเพื่อรันแอปพลิเคชันในระบบของคุณ ติดตั้งการพึ่งพาโดยใช้คำสั่ง:

pip install -r requirements.txt

เมื่อติดตั้งการขึ้นต่อกันทั้งหมดแล้ว คุณจะต้องเพิ่มตัวแปรสภาพแวดล้อมที่จำเป็นสำหรับโปรเจ็กต์ โครงการประกอบด้วย 271 ไฟล์ซึ่งมีตัวแปรสภาพแวดล้อมทั้งหมด เรียกใช้คำสั่งต่อไปนี้เพื่อส่งออกตัวแปรสภาพแวดล้อมทั้งหมดจาก 287 ไฟล์:

source .env

ถัดไปคุณต้องสร้างฐานข้อมูล เนื่องจากโปรเจ็กต์ใช้ Flask-Migrate การสร้างฐานข้อมูลจึงค่อนข้างง่ายโดยใช้คำสั่งต่อไปนี้:

python manage.py db init
python manage.py db migrate
python manage.py db upgrade

ตอนนี้คุณสามารถรันแอปพลิเคชันโดยใช้คำสั่ง:

python manage.py run

แอปพลิเคชันจะเริ่มทำงานและคุณสามารถไปที่ 299 ในเว็บเบราว์เซอร์ของคุณเพื่อดูแอปพลิเคชัน

นี่คือวิดีโอสาธิตที่แสดงแอปพลิเคชัน:

ภายในโครงการของคุณ 309 คุณจะมี 318 โฟลเดอร์ที่มีซอร์สโค้ดของคุณและ 329 โฟลเดอร์ที่มีการทดสอบหน่วย

นอกเหนือจากนี้ คุณจะมี 336 ด้วย ที่มีการตั้งค่าการกำหนดค่าสำหรับแอปพลิเคชันของคุณและ 345 ไฟล์ที่ใช้ Flask-CLI เพื่อเพิ่มคำสั่งต่างๆ สำหรับการรันและทดสอบแอปพลิเคชันของคุณ นอกจากนี้คุณยังจะพบไฟล์อื่นๆ เช่น 357 และ 362 ซึ่งคุณรู้อยู่แล้ว

375 โฟลเดอร์ประกอบด้วยสี่โฟลเดอร์ย่อย – 385 , 398 , 409 และ 419 . 427 และ 432 โฟลเดอร์ประกอบด้วยไฟล์ HTML และไฟล์คงที่เช่นไฟล์ CSS รูปภาพและ JavaScript ตามลำดับ อีกสองโฟลเดอร์ 445 และ 454 ใช้แนวคิดของ Flask Blueprints และมีรหัสที่เกี่ยวข้องสำหรับส่วนต่างๆ ของแอปพลิเคชัน

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการปรับใช้แอปพลิเคชัน Flask ของคุณ โปรดดูบทช่วยสอนนี้

วิธีผสานรวมบริการตรวจสอบอีเมลในแอป Flask ของคุณ

จนถึงจุดนี้ คุณสามารถลงทะเบียนในแอปพลิเคชันได้สำเร็จโดยใช้ที่อยู่อีเมลใดก็ได้ ไม่ว่าจะถูกต้องหรือไม่ก็ตาม

แต่ไม่ควรให้มีที่อยู่อีเมลแบบสุ่มหรือไม่ถูกต้องทำให้ฐานข้อมูลของคุณเกะกะ ดังนั้นจึงเป็นความคิดที่ดีที่จะตรวจสอบที่อยู่อีเมลก่อนที่จะลงทะเบียนผู้ใช้ หากที่อยู่อีเมลถูกต้อง คุณสามารถดำเนินการลงทะเบียนผู้ใช้ได้สำเร็จ

เพิ่มคีย์ API การตรวจสอบอีเมลของคุณใน 461 ไฟล์เพื่อให้คุณสามารถอ่านได้โดยไม่ต้องเปิดเผยต่อสาธารณะ:

export SECRET_KEY=fdkjshfhjsdfdskfdsfdcbsjdkfdsdf
export DEBUG=True
export APP_SETTINGS=config.DevelopmentConfig
export DATABASE_URL=sqlite:///db.sqlite
export FLASK_APP=src
export FLASK_DEBUG=1
export API_KEY=your-api-key-here

แทนที่ 477 ด้วยคีย์ API ที่ถูกต้องของคุณ ถัดไป คุณจะต้องเรียกใช้คำสั่งต่อไปนี้อีกครั้งเพื่อส่งออกตัวแปรสภาพแวดล้อม:

source .env

ตอนนี้ สร้าง 488 ไฟล์ที่อยู่ใน 492 โฟลเดอร์ย่อยใน 507 โฟลเดอร์ ไฟล์นี้จะมีฟังก์ชันยูทิลิตี้เพื่อตรวจสอบอีเมล เพิ่มรหัสต่อไปนี้ในไฟล์:

import requests
from requests.structures import CaseInsensitiveDict
from decouple import config
def is_valid(email: str):
 url = f"https://api.emailvalidation.io/v1/info?email={email}"
 headers = CaseInsensitiveDict()
 headers["apikey"] = config("API_KEY")
 response = requests.get(url, headers=headers)
 if response.status_code == 200:
 json_resp = response.json()
 format_valid = json_resp["format_valid"]
 mx_found = json_resp["mx_found"]
 smtp_check = json_resp["smtp_check"]
 state = json_resp["state"]
 return format_valid and mx_found and smtp_check and state == "deliverable"
 return False

ตามที่กล่าวไว้ก่อนหน้านี้ 518 ฟังก์ชันส่งกลับค่าบูลีนเพื่อระบุว่าที่อยู่อีเมลนั้นถูกต้องหรือไม่ สิ่งสำคัญที่ควรทราบคือฟังก์ชันนี้ไม่ได้ฮาร์ดโค้ดค่าคีย์ API แต่จะดึงข้อมูลจากตัวแปรสภาพแวดล้อมแทน

ถัดไปใน 521 คลาสใน 533 ไฟล์ คุณมี 547 วิธีการ วิธีการนี้มีหน้าที่ตรวจสอบข้อมูลอินพุตที่ผู้ใช้ส่งมาระหว่างขั้นตอนการลงทะเบียน

ก่อนหน้านี้ วิธีการนี้จะตรวจสอบเฉพาะว่าอีเมลได้รับการลงทะเบียนแล้วและรหัสผ่านตรงกันหรือไม่ แต่ขณะนี้คุณสามารถเพิ่มการตรวจสอบเพิ่มเติมเพื่อตรวจสอบว่าอีเมลถูกต้องหรือไม่ ดังนั้นการแก้ไข 559 วิธีการมีลักษณะดังนี้:

...
from src.accounts.utils import is_valid
...
class RegisterForm(FlaskForm):
 ...
 def validate(self):
 initial_validation = super(RegisterForm, self).validate()
 if not initial_validation:
 return False
 if not is_valid(self.email.data):
 self.email.errors.append("Email is invalid")
 return False
 user = User.query.filter_by(email=self.email.data).first()
 if user:
 self.email.errors.append("Email already registered")
 return False
 if self.password.data != self.confirm.data:
 self.password.errors.append("Passwords must match")
 return False
 return True

ใน 567 วิธีการถ้า 574 (นั่นคือที่อยู่อีเมลของผู้ใช้) ไม่ถูกต้อง คุณเพิ่มข้อความแสดงข้อผิดพลาดต่อท้าย 589 รายการและส่งกลับ 594 ซึ่งหมายความว่าข้อมูลผู้ใช้ไม่ถูกต้อง

ตอนนี้เมื่อคุณเรียกใช้แอปพลิเคชันและลองลงทะเบียน คุณจะเห็นแอปพลิเคชันนั้นแสดงสด นี่คือการสาธิตที่แสดงทั้งกรณีที่ถูกต้องและไม่ถูกต้อง

ปรับปรุงการตรวจสอบสิทธิ์ผู้ใช้ Flask ด้วยบริการตรวจสอบความถูกต้องของอีเมล

กรณีการใช้งานอื่นๆ ของบริการตรวจสอบอีเมล

นอกเหนือจากการตรวจสอบความถูกต้องของอีเมลของผู้ใช้ในระหว่างการลงทะเบียนแล้ว ยังมีกรณีการใช้งานอื่นๆ อีกหลายประการสำหรับบริการตรวจสอบความถูกต้องของอีเมล บางส่วนได้แก่:

  1. การทำความสะอาดรายชื่ออีเมล:คุณสามารถใช้บริการตรวจสอบความถูกต้องของอีเมลเพื่อล้างรายชื่ออีเมลโดยการลบที่อยู่อีเมลที่ไม่ถูกต้อง ไม่มีอยู่จริง หรือมีความเสี่ยงออก ซึ่งสามารถช่วยปรับปรุงความสามารถในการส่งอีเมลและทำให้แน่ใจว่าอีเมลของคุณไปถึงผู้รับที่ต้องการ
  2. การป้องกันกิจกรรมการฉ้อโกง:คุณยังสามารถใช้บริการตรวจสอบอีเมลเพื่อตรวจจับกิจกรรมการฉ้อโกง เช่น การสร้างบัญชีปลอมหรือคำสั่งซื้อที่ฉ้อโกง ด้วยการตรวจสอบที่อยู่อีเมลที่เกี่ยวข้องกับกิจกรรมเหล่านี้ คุณสามารถป้องกันไม่ให้กิจกรรมดังกล่าวเกิดขึ้นได้
  3. การปรับปรุงแคมเปญการตลาด:บริการเหล่านี้สามารถช่วยปรับปรุงความถูกต้องและประสิทธิผลของแคมเปญการตลาดผ่านอีเมล การรับรองว่าที่อยู่อีเมลนั้นถูกต้องและใช้งานได้ ธุรกิจจะสามารถเพิ่มอัตราการส่งอีเมลและปรับปรุงประสิทธิภาพแคมเปญโดยรวมได้

โดยรวมแล้ว บริการตรวจสอบความถูกต้องของอีเมลอาจเป็นเครื่องมือที่มีประสิทธิภาพในการรับรองความถูกต้องและความถูกต้องของข้อมูลผู้ใช้ การป้องกันการฉ้อโกง และปรับปรุงประสบการณ์ผู้ใช้

บทสรุป

บริการตรวจสอบอีเมลเป็นเครื่องมือที่มีประสิทธิภาพสำหรับแอปพลิเคชันใดๆ ที่ต้องมีการตรวจสอบที่อยู่อีเมลของผู้ใช้ จำเป็นอย่างยิ่งที่จะต้องตรวจสอบให้แน่ใจว่าที่อยู่อีเมลนั้นถูกต้องเพื่อป้องกันข้อผิดพลาดและเพื่อให้แน่ใจว่าข้อมูลที่ผู้ใช้ป้อนนั้นถูกต้อง

ในบทความนี้ คุณได้ทราบวิธีใช้ emailvalidation.io API เพื่อตรวจสอบความถูกต้องของที่อยู่อีเมลใน Python คุณยังได้เรียนรู้กรณีการใช้งานที่เป็นไปได้อื่นๆ สำหรับบริการตรวจสอบความถูกต้องของอีเมล เช่น การตรวจจับการฉ้อโกงและการตลาดผ่านอีเมล

ด้วยการใช้บริการตรวจสอบความถูกต้องของอีเมลในแอปพลิเคชันของคุณ คุณสามารถปรับปรุงประสบการณ์ผู้ใช้ของคุณและมั่นใจได้ว่าข้อมูลของคุณถูกต้องและเป็นปัจจุบัน

แหล่งข้อมูลเพิ่มเติม

  • วิธีใช้พิมพ์เขียวเพื่อจัดระเบียบแอป Flask ของคุณ
  • วิธีตั้งค่าการยืนยันอีเมลในแอป Flask
  • เอกสาร emailvalidation.io

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น