Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

รักษาความปลอดภัยการยืนยันตัวตนใน Rails ด้วย Clearance: คู่มือขั้นตอน

Clearance เป็นระบบยืนยันตัวตนที่เรียบง่ายใช้ email และ password พัฒนาโดยทีม Thoughtbot มีค่าเริ่มต้นที่มีความคิดเห็น (opinionated defaults) แต่ออกแบบให้ง่ายต่อการ override ระบบได้รับการดูแลอย่างต่อเนื่อง ติดตามได้ที่ GitHub

บทเรียนนี้จะแสดงวิธีผสาน Clearance เข้าแอป Rails โดยใช้แอปย่อย มาเริ่มกัน!

เริ่มต้น

สร้างแอป Rails ใหม่ สำหรับบทเรียนนี้ตั้งชื่อ tutsplus-clearance:

เพิ่ม Bootstrap gem ใน Gemfile:

ติดตั้ง:

แก้ไข application.scss:

ตั้งค่า Clearance

เพิ่ม Clearance gem ใน Gemfile:

ติดตั้ง:

รัน generator ติดตั้ง Clearance:

จะได้ output ในเทอร์มินัล ประมาณนี้:

คำสั่งนี้สร้างไฟล์หลายไฟล์ เช่น clearance.rb ใน config/initializers, โมเดล User และไมเกรชัน:

ตามขั้นตอน แก้ไข config/environments/development.rb เพิ่มบรรทัดก่อน end:

แก้ไข config/initializers/clearance.rb เปลี่ยน sender email:

สามารถ override ค่าเริ่มต้นได้ด้วยโค้ดนี้:

รัน migration:

เพิ่ม action index ใน PagesController:

สร้างวิว index:

แก้ routes:

สร้าง partial _navigation.html.erb ใน layouts:

จำกัดการเข้าถึง (Restricted Access)

Clearance สามารถจำกัดการเข้าถึงหน้าเฉพาะได้ สร้างวิว new.html.erb ใน app/views/pages:

เพิ่ม route:

แก้ PagesController ใช้ require_login:

ลองรันเซิร์ฟเวอร์ ไปที่ https://localhost:3000/pages/new จะ redirect ไปหน้า sign in

Clearance ยังมี routing constraints ควบคุมการเข้าถึง:

โค้ดนี้สร้าง route แยกสำหรับผู้ใช้ที่ล็อกอินแล้ว

Override ค่าเริ่มต้นของ Clearance

Clearance ทำงานหลายอย่างเบื้องหลัง อาจต้องปรับแต่ง ต้องการ override ให้รัน:

routes จะกลายเป็น:

คำสั่งนี้ตั้ง config.routes เป็น false ใน config/initializers/clearance.rb ใช้ไฟล์ custom ที่เพิ่งสร้าง

สร้าง views เพื่อปรับแต่ง:

ไฟล์ที่สร้างได้:

จะมี prompt ถาม overwrite app/views/layouts/application.html.erb เลือกตามต้องการ

Layouts

Clearance ใช้ layout เริ่มต้นของแอป ถ้าอยากเปลี่ยน ให้ระบุใน initializer:

Helper Methods

Clearance มี helper methods ใช้ใน controllers, views, helpers ได้แก่ signed_in?, signed_out?, current_user ตัวอย่าง:

สรุป

Clearance มีฟีเจอร์มากมายสำหรับ authentication ลองใช้ในโปรเจกต์ถัดไป ดูรายละเอียดเพิ่มได้ที่ GitHub