ทางออกที่ดีที่สุดสำหรับการรับรองความถูกต้องใน Ruby on Rails [ปิด]


84

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

ฉันเริ่มมองหางานที่เขียนไปแล้ว แต่ฉันพบว่ามันสับสนจริงๆ ฉันได้ดูที่ LoginGenerator, RestfulAuthentication, SaltedLoginGenerator แต่ดูเหมือนจะไม่มีที่เดียวที่มีบทช่วยสอนที่ยอดเยี่ยมหรือมีการเปรียบเทียบ หากมีไซต์ที่ฉันยังไม่เคยค้นพบหรือหากมีมาตรฐานโดยพฤตินัยที่คนส่วนใหญ่ใช้ฉันขอขอบคุณสำหรับความช่วยเหลือ

คำตอบ:


83

AuthLogic ดูเหมือนจะเป็นเด็กใหม่ในบล็อกและดูเหมือนว่าจะเป็นวิวัฒนาการต่อไปของ restful_authentication ใช้งานง่ายขึ้น ฯลฯ

http://github.com/binarylogic/authlogic/tree/master

แก้ไข: ตอนนี้ Rails 3 หมดแล้ว Devise ดูเหมือนจะเป็นเด็กใหม่คนใหม่ในบล็อก

https://github.com/plataformatec/devise หรือตอนนี้ฉันได้เปิดตัวการตรวจสอบสิทธิ์ของตัวเองด้วยhas_secure_passwordRails ในตัวhttp://railscasts.com/episodes/250-authentication-from-scratch-revised

หมายเหตุด้านข้าง: Ruby Toolbox เป็นไซต์ที่ยอดเยี่ยมสำหรับการค้นหาโซลูชันที่ดีที่สุดในปัจจุบันในประเภทต่างๆ (ตามจำนวนผู้เฝ้าดู GitHub):

http://ruby-toolbox.com/categories/rails_authentication.html


ฉันจะพิจารณาใช้ authlogic ด้วย มันสะอาดกว่า restful_auth มาก Authlogic เรียนรู้จากโซลูชันก่อนหน้านี้ทั้งหมดและบรรจุใหม่ในโซลูชันที่สะอาดและปรับแต่งได้มากขึ้น
taelor

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

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

ฉันสามารถรวมเข้ากับ OpenID และ RPXNow ได้เช่นกันซึ่งดูดีมากตัวอย่างที่นี่: buyervote.com/user_session/new
Brian Armstrong

โครงการตัวอย่างช่วยให้เริ่มต้นใช้งานได้ง่ายมาก เพียงแค่ git โคลนที่เก็บคัดลอกในไฟล์ database.yml และคุณมีไซต์ที่ได้รับการรับรองความถูกต้องอย่างสมบูรณ์
Casey Watson

22

ฉันอยากจะแนะนำRestful Authenticationจริงๆ ฉันคิดว่ามันค่อนข้างเป็นมาตรฐานทางพฤตินัย


1
ฉันจะสองสิ่งนี้ เมื่อเร็ว ๆ นี้ฉันต้องใช้ระบบตรวจสอบความถูกต้องหลายไซต์ที่ค่อนข้างซับซ้อนซึ่งฉันใช้การออกแบบ RestfulAuth โดยให้ API เดียวกันกับแอปพลิเคชันที่เหลือเช่นเดียวกับที่ RA จะเป็นเรื่องง่ายที่ชัดเจนในการทำงานกับ API และง่ายต่อการ อ่านรหัส :-)
Laurie Young

10

สำหรับวิธีง่ายๆจริงๆให้ไปที่ โปรโมชั่น

หากคุณกำลังมองหาตัวเลือกเพิ่มเติมDeviseเป็นทางออกที่ดี ใช้ Warden ซึ่งเป็นระบบการพิสูจน์ตัวตนบนชั้นวาง


1
ฉันสามารถรับรอง Devise ได้ ฉันตั้งค่าในแอปของฉันและสามารถบอกได้ว่ามันใช้งานง่ายอย่างน้อยสำหรับฉันในฐานะญาติมือใหม่ ฉันเขียนบล็อกเกี่ยวกับประสบการณ์ของฉันที่นี่: therealmattslay.blogspot.com/2010/06/…
MattSlay

ขออภัย ... นี่คือลิงค์ที่แก้ไข: mattslay.com/devise-authentication-for-rails
MattSlay


3

โปรดทราบว่า LoginGenerator และ SaltedLoginGenerator ถูกแทนที่โดย Restful Authentication และไม่ได้รับการสนับสนุนใน Rails รุ่นใหม่ ๆ - อย่าเสียเวลากับพวกเขาแม้ว่าจะยอดเยี่ยมในเวลานั้นก็ตาม


3

นอกจากนี้ฉันยังต้องการชี้ให้เห็นถึงบทแนะนำ / การอภิปรายที่ยอดเยี่ยมเกี่ยวกับการขยายฟังก์ชันการทำงานหลักของ Restful Authentication ในกรณีที่คุณกำลังมองหาสิ่งที่แข็งแกร่งกว่านี้อีกเล็กน้อย


1
โปรดอย่าคิดว่าฉันหยาบคายมาก แต่ฉันคิดว่าการเข้าสู่ฟอรัมนั้นเป็นตัวอย่างของส่วนที่แย่ที่สุดของ Restful Authentication มีคุณสมบัติที่ขาดหายไปมากมายและนี่คือชุดขั้นตอนที่ยาวเป็นพิเศษ (และขัดแย้งกัน) สำหรับการเพิ่มคุณสมบัติเหล่านั้นทีละรายการ ไม่ว่าอะไรจะตรงข้ามกับ DRY ฉันก็ค่อนข้างมั่นใจว่าเป็นอย่างนั้น เพียง แต่คุณไม่ได้ทำซ้ำด้วยตัวคุณเองคุณกำลังทำซ้ำนักพัฒนาอื่น ๆ อีกหลายร้อยคนเพื่อรวมสิ่งต่างๆที่ควรรวมไว้หรือเป็นทางเลือกสำหรับ RA ตั้งแต่เริ่มต้น
John Munsch

3

ฉันชอบการกวาดล้างของ Thoughtbot จริงๆ ง่ายมากและมีตะขอที่ดีและสามารถทดสอบได้


3

AuthLogicน่าจะเป็นสิ่งที่คุณต้องการสำหรับสิ่งนี้ สามารถกำหนดค่าได้มากและแม้ว่าจะไม่ได้สร้างรหัสให้คุณ แต่ก็ใช้งานได้ง่ายมาก สำหรับการตรวจสอบอีเมลและการกู้คืนรหัสผ่านคุณอาจต้องการใช้:perishable_tokenคอลัมน์นี้ AuthLogic ดูแลคุณจะต้องรีเซ็ตเมื่อมีการใช้งานเท่านั้น สำหรับข้อมูลเกี่ยวกับวิธีตั้งค่าแอปพื้นฐานคุณสามารถดูRailscastของ Ryan Bates ใน AuthLogicและตัวอย่างแอป "อย่างเป็นทางการ" Ben Johnson ผู้สร้าง AuthLogic ได้เขียนบล็อกโพสต์เกี่ยวกับวิธีรีเซ็ตรหัสผ่านอย่างปลอดภัย

น่าเสียดายที่ฉันไม่สามารถโพสต์ได้มากกว่าหนึ่งลิงก์ แต่ลิงก์ไปยัง railscast บล็อกโพสต์การรีเซ็ตรหัสผ่านและแอปตัวอย่างทั้งหมดอยู่ใน README (ดูที่เก็บ AuthLogic สำหรับ README)

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



2

restful_authentication เป็นเครื่องมือที่มีประสิทธิภาพซึ่งมีความยืดหยุ่นสูงและมอบสิ่งที่คุณกำลังมองหาเกือบทั้งหมดนอกกรอบ อย่างไรก็ตามข้อควรระวังสองประการ:

  1. อย่าคิดในแง่ของ 'การควบคุม' ใน Rails โมเดลมุมมองและคอนโทรลเลอร์มีความเป็นอิสระมากกว่าใน ASP.NET แบบ 'เว็บฟอร์ม' คำนวณสิ่งที่คุณต้องการจากแต่ละเลเยอร์อย่างเป็นอิสระเขียนการทดสอบ / ข้อกำหนดเพื่อจับคู่และตรวจสอบว่าแต่ละเลเยอร์ทำตามที่คุณคาดหวัง
  2. แม้ว่าคุณจะใช้ปลั๊กอิน แต่ก็ไม่มีสิ่งทดแทนสำหรับการอ่านโค้ด (อย่างน้อยบางส่วน) ที่สร้างขึ้น หากคุณมีแนวคิดภาพรวมเกี่ยวกับสิ่งที่เกิดขึ้นภายใต้ประทุนคุณจะพบว่าการดีบักและปรับแต่งได้ง่ายขึ้นมาก

2

ปลั๊กอิน restful_authentication และปลั๊กอินอื่น ๆ ที่ขยายได้ตอบสนองความต้องการของคุณอย่างสมบูรณ์แบบ การค้นหาอย่างรวดเร็วใน github.com จะเปิดเผยบทเรียนตัวอย่างและส่วนขยายมากมาย ไปที่นี่:
- http://github.com/search?q=restful_authentication

มีหลายโปรเจ็กต์ที่ใช้ restful_authentication เพียงเพื่อให้ตัวอย่างของแอพ Rails bare-bone ที่มีเฉพาะส่วนการพิสูจน์ตัวตน

  1. http://github.com/fudgestudios/bort - แอปรางฐานที่มี: การตรวจสอบสิทธิ์ RESTful
  2. http://github.com/mrflip/restful_authentication_example - อีกโครงการหนึ่งที่มีการทดสอบวิธีใช้ restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial - เช่นเดียวกับด้านบนโดยมีปลั๊กอินอื่น ๆ ที่รวมอยู่ด้วย
  4. http://railscasts.com/episodes/67-restful-authentication - screencast ที่ยอดเยี่ยมอธิบาย restful_authentication

ข้อมูลนี้น่าจะเพียงพอที่จะช่วยให้คุณเริ่มค้นหาหัวและก้อยได้ ... ขอให้โชคดี


2

เพียงแค่อัปเดตสิ่งนี้: Railscast # 250 ของ Ryan Bates แสดงการสร้างระบบการตรวจสอบความถูกต้องตั้งแต่เริ่มต้น ....


2
ในขณะที่ RailsCast ในระบบรับรองความถูกต้องตามความต้องการนั้นยอดเยี่ยม (และฉันได้ใช้ระบบที่คล้ายกันหลายครั้ง) แต่ก็ไม่ได้สร้างไว้ล่วงหน้าและไม่ได้ให้คุณสมบัติทั้งหมดที่การตั้งค่าเช่น Devise ทำ
Colin R

เห็นด้วย แต่ Devise สามารถค่อนข้างใหญ่ ในความคิดของฉันสามารถประหยัดเวลาและความเจ็บปวดได้มากโดยการสร้างระบบรับรองความถูกต้องของคุณเองเว้นแต่คุณจะใช้ประโยชน์จากคุณสมบัติที่ Devise นำเสนออย่างเต็มที่
Adam Jonas

2
ฉันกำลังมองหาโซลูชันที่สร้างไว้ล่วงหน้าซึ่งสามารถใช้ในแอปพลิเคชัน RoR ของฉันได้
Colin R

0

การโหวตอีกครั้งสำหรับ Clearance - อาจจะไม่สามารถปรับแต่งได้หรือเป็น 'ใน' เป็น authlogic แต่ในแง่ของความสามารถในการวางมันเข้าที่และไปได้ก็คุ้มค่าที่จะดู

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.