Giải pháp tốt nhất để xác thực trong Ruby on Rails [đã đóng]


84

Tôi đang tìm một giải pháp được tạo sẵn mà tôi có thể sử dụng trong ứng dụng RoR của mình. Lý tưởng nhất là tôi đang tìm kiếm thứ gì đó tương tự như xác thực ASP.NET Forms cung cấp xác thực email, kiểm soát đăng ký và cho phép người dùng đặt lại mật khẩu của họ. Ồ đúng rồi, và dễ dàng cho phép tôi kéo người dùng hiện đang đăng nhập vào ứng dụng.

Tôi đã bắt đầu xem xét các phần đã được viết sẵn, nhưng tôi thấy nó thực sự khó hiểu. Tôi đã xem LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, nhưng dường như không có một nơi nào có hướng dẫn tuyệt vời hoặc cung cấp so sánh giữa chúng. Nếu có một trang web mà tôi vẫn chưa khám phá ra hoặc nếu có một tiêu chuẩn thực tế mà hầu hết mọi người sử dụng, tôi sẽ đánh giá cao sự giúp đỡ của bạn.

Câu trả lời:


83

AuthLogic dường như là đứa trẻ mới trong khối và dường như là sự phát triển tiếp theo của restful_authentication, dễ sử dụng hơn, v.v.

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

Chỉnh sửa: bây giờ Rails 3 đã ra mắt, Devise dường như là đứa trẻ mới, mới trong khối

https://github.com/plataformatec/devise hoặc tôi hiện đang triển khai xác thực của riêng mình với tính năng tích has_secure_passwordhợp sẵn cho Rails http://railscasts.com/episodes/250-authentication-from-scratch-revised

Lưu ý: Hộp công cụ Ruby là một trang web tuyệt vời để tìm giải pháp tốt nhất hiện tại trong các danh mục khác nhau (dựa trên số lượng người theo dõi GitHub):

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


Tôi thực sự cũng sẽ cân nhắc việc sử dụng authlogic. nó rõ ràng hơn nhiều so với restful_auth. Authlogic đã học hỏi từ tất cả các giải pháp trước đó và đóng gói lại chúng trong một giải pháp sạch hơn, dễ tùy chỉnh hơn
quantor

Tôi đã nghe lời khuyên của bạn và đồng hành cùng Authlogic, và tôi thực sự hài lòng. Có thể mất một chút thời gian để thiết lập, những gì nó rất rõ ràng và dễ hiểu. Không có đống mã được tạo đáng sợ.
Chàng trai C

Phải, mất nhiều thời gian hơn để thiết lập. Tôi ước gì anh ấy đã loại bỏ một chút trừu tượng ở đó và gửi nó với những thứ mà mọi người cần như quên mật khẩu và bao gồm xác nhận email. Nhưng nhìn chung, nó vẫn khá tốt.
Brian Armstrong,

Tôi cũng có thể kết hợp nó với OpenID và RPXNow, điều này thật tuyệt vời, ví dụ ở đây: BUYvote.com/user_session/new
Brian Armstrong,

Dự án ví dụ giúp bạn thiết lập và chạy rất dễ dàng. Chỉ cần git sao chép kho lưu trữ, sao chép trong tệp database.yml và bạn đã có một trang web được xác thực hoàn toàn.
Casey Watson

22

Tôi thực sự muốn giới thiệu Xác thực khôi phục . Tôi nghĩ nó khá giống tiêu chuẩn thực tế.


1
Tôi sẽ thứ hai điều này. Gần đây, tôi đã phải triển khai một hệ thống xác thực nhiều trang web khá phức tạp, mà tôi dựa trên thiết kế RestfulAuth, cung cấp cùng một API cho phần còn lại của ứng dụng như RA. đọc mã :-)
Laurie Young

10

Để có một giải pháp thực sự đơn giản, hãy sử dụng Giải phóng mặt bằng .

Nếu bạn đang tìm kiếm nhiều lựa chọn hơn thì Devise là một giải pháp tuyệt vời. Nó sử dụng Warden, một hệ thống xác thực dựa trên giá đỡ.


1
Tôi có thể bảo đảm cho Devise. Tôi đã thiết lập nó trong ứng dụng của mình và có thể nói rằng nó rất dễ sử dụng, ít nhất đối với tôi là một người mới tương đối. Tôi đã viết blog về trải nghiệm của mình với nó tại đây: therealmattslay.blogspot.com/2010/06/…
MattSlay

Xin lỗi ... Đây là liên kết đã sửa chữa: mattslay.com/devise-authentication-for-rails
MattSlay


3

Chỉ cần lưu ý, LoginGenerator và SaltedLoginGenerator đã được thay thế bằng Xác thực khôi phục và không được hỗ trợ trên các bản phát hành Rails mới hơn - đừng lãng phí thời gian cho chúng, mặc dù chúng rất tuyệt vào thời điểm đó.


3

Tôi cũng muốn chỉ ra một hướng dẫn / thảo luận tuyệt vời về việc mở rộng chức năng cốt lõi của Xác thực khôi phục, trong trường hợp bạn đang tìm kiếm thứ gì đó mạnh mẽ hơn một chút.


1
Xin đừng nghĩ tôi thô lỗ khủng khiếp, nhưng tôi nghĩ mục nhập diễn đàn đó là một ví dụ về phần tồi tệ nhất của Xác thực Khôi phục. Có vô số tính năng bị thiếu và đây là một tập hợp các bước siêu dài (và mâu thuẫn) để thêm các tính năng đó cùng một lúc. Bất kể điều ngược lại với DRY là gì, tôi khá chắc chắn là vậy. Chỉ là bạn không lặp lại chính mình, bạn đang lặp lại hàng trăm nhà phát triển khác để bao gồm những thứ đáng lẽ phải được bao gồm hoặc tùy chọn cho RA ngay từ đầu.
John Munsch

3

Tôi thực sự thích sự thông thoáng của thinkbot. Rất đơn giản và có một vài móc tốt và có thể kiểm tra được.


3

AuthLogic dường như là thứ bạn muốn cho điều này. Nó rất dễ cấu hình và mặc dù nó không tạo mã cho bạn, nhưng nó khá dễ sử dụng. Để xác thực email và khôi phục mật khẩu, bạn có thể muốn sử dụng :perishable_tokencột. AuthLogic sẽ chăm sóc nó, bạn chỉ cần thiết lập lại nó khi nó được sử dụng. Để biết thông tin về cách thiết lập một ứng dụng cơ bản, bạn có thể xem Railscast của Ryan Bates trên AuthLogic và ứng dụng mẫu "chính thức". Ben Johnson, tác giả của AuthLogic cũng đã viết một bài đăng trên blog về cách khôi phục lại mật khẩu.

Rất tiếc, tôi không thể đăng nhiều hơn một liên kết, nhưng các liên kết đến railscast, bài đăng blog đặt lại mật khẩu và ứng dụng mẫu đều nằm trong README (xem repo AuthLogic cho README)

Cập nhật: Bây giờ tôi có thể đăng nhiều liên kết hơn, vì vậy tôi đã liên kết thêm một số liên kết. Cảm ơn bạn marinatime đã thêm liên kết trong lúc đó



2

restful_authentication là một công cụ mạnh mẽ, rất linh hoạt và cung cấp hầu hết những gì bạn đang tìm kiếm. Tuy nhiên, một số lưu ý:

  1. Đừng nghĩ về 'điều khiển'. Trong Rails, Model, View và Controller độc lập hơn nhiều so với trong ASP.NET 'Webforms-style'. Tìm ra những gì bạn muốn từ mỗi lớp một cách độc lập, viết các bài kiểm tra / thông số kỹ thuật để phù hợp và đảm bảo mỗi lớp đang làm những gì bạn mong đợi.
  2. Ngay cả khi bạn đang sử dụng một plugin thì không có gì thay thế cho việc đọc (ít nhất là một số) mã được tạo. Nếu bạn có một ý tưởng toàn cảnh về những gì đang diễn ra, bạn sẽ thấy việc gỡ lỗi và tùy chỉnh dễ dàng hơn nhiều.

2

Plugin restful_authentication và các plugin khác mở rộng nó, đáp ứng nhu cầu của bạn một cách hoàn hảo. Tìm kiếm nhanh trên github.com sẽ thấy rất nhiều hướng dẫn, ví dụ và phần mở rộng. Chỉ cần truy cập vào đây:
- http://github.com/search?q=restful_authentication

Có một số dự án sử dụng restful_authentication chỉ để cung cấp các ví dụ về ứng dụng Rails đơn giản chỉ với các phần xác thực.

  1. http://github.com/fudgestudios/bort - Một ứng dụng đường ray cơ sở có tính năng: Xác thực RESTful
  2. http://github.com/mrflip/restful_authentication_example - Một dự án khác có mẫu kiểm tra tuyệt vời về cách sử dụng restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial - Tương tự như trên, với một số plugin khác được đóng gói.
  4. http://railscasts.com/episodes/67-restful-authentication - một screencast tuyệt vời giải thích về restful_authentication

Thông tin này đủ để giúp bạn bắt đầu tìm đầu và đuôi ... chúc may mắn.


2

Chỉ cập nhật cái này: Ryan Bates ' Railscast # 250 cho thấy việc xây dựng một hệ thống xác thực từ đầu ....


2
Mặc dù RailsCast trên một hệ thống xác thực đặt trước rất tuyệt vời (và tôi đã triển khai một hệ thống tương tự nhiều lần), nhưng không có nghĩa là nó được tạo sẵn và không cung cấp tất cả các tính năng mà một thiết lập như Devise có.
Colin R

Đồng ý, nhưng Devise có thể khá cồng kềnh. Theo ý kiến ​​của tôi, có thể tiết kiệm được nhiều thời gian và công sức bằng cách xây dựng hệ thống xác thực của riêng bạn trừ khi bạn thực sự tận dụng hết các tính năng mà Devise cung cấp.
Adam Jonas

2
Tôi đang tìm một giải pháp được tạo sẵn mà tôi có thể sử dụng trong ứng dụng RoR của mình.
Colin R

0

Một phiếu bầu khác cho Cleaner - có lẽ không thể tùy chỉnh hoặc 'trong' như authlogic, nhưng về mặt chỉ có thể đặt nó tại chỗ và đi, nó chắc chắn đáng để xem xét.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.