2013-02-13 30 views
5

Tôi đang tạo ứng dụng Rails không sử dụng cơ sở dữ liệu. Thay vào đó, mô hình được quản lý bằng cách sử dụng một API Ruby bao bọc một hệ thống kế thừa.Làm cách nào để sử dụng Rails/Devise mà không có cơ sở dữ liệu?

Tôi có cuộc gọi Ruby cho phép tôi xác thực kết hợp tên người dùng/mật khẩu. Có thể sử dụng Devise (hoặc một số giải pháp xác thực ngoài giá khác) trong trường hợp này không?

Hy vọng của tôi là tôi có thể ghi đè lên một vài phương pháp trong Devise và vẫn nhận được nhiều lợi ích.

Peter.

Trả lời

8

điều đó là có thể.

Bạn có thể ghi đè xác thực mặc định và sử dụng dịch vụ từ xa với Devise and Warden.

bài viết trên blog này cung cấp cho bạn chi tiết như thế nào:

http://4trabes.com/2012/10/31/remote-authentication-with-devise/

Cho chúng tôi biết làm thế nào nó đi ...

Chúc may mắn

+0

Trang bạn xác định mô tả loại giải pháp mà tôi muốn triển khai. Tuy nhiên, nó khá mơ hồ về một số chi tiết. Ví dụ: Người dùng PORO sống ở đâu. Có ba lớp người dùng hay chỉ một lớp? Và mô hình Devise :: Models và Devise :: Strategies sống ở đâu? – spierepf

+1

Gah! Tôi cần thêm 'Devise.add_module: remote_authenticatable,: controller =>: sessions,: route => {: session =>: routes}' vào tệp devise.rb của tôi. Tôi chưa bao giờ gặp một ngôn ngữ có nhiều voodoo như Ruby. Bất cứ ai có thể giải thích những gì dòng này không? – spierepf

0

Nếu tôi hiểu chính xác, bạn muốn sử dụng Devise trong dự án của bạn để bao bọc hệ thống xác thực kế thừa cũ. Bạn có thể cần một cái gì đó giống như để xác định phương thức legacy_username và legacy_password, hãy tạo một di chuyển để áp dụng cho Devise gem, và tôi tin rằng bạn sẽ tìm ra cách của bạn. Có lẽ liên kết này có thể giúp bạn ra ngoài: http://www.davidverhasselt.com/2012/05/13/how-to-migrate-passwords-from-legacy-systems-to-devise/

Và cũng có thể, có lẽ đây - làm thế nào để tạo ra encryptor tùy chỉnh trong lập mưu - https://github.com/plataformatec/devise/wiki/How-To:-Create-a-custom-encryptor

Tôi hy vọng nó sẽ giúp.

+0

Vấn đề là tôi không có một cơ sở dữ liệu . Vì vậy ActiveRecord :: Base không có trong vốn từ vựng của tôi. Ngoài ra, tôi không xử lý mã hóa. – spierepf

Các vấn đề liên quan