2011-09-07 42 views
5

Tôi đã lập trình với cả Sinatra và Padrino trong một thời gian dài. Tuy nhiên, tôi vẫn không thể tìm thấy giải pháp xác thực và ủy quyền phù hợp cho Padrino. Hãy để tôi giải thích kỳ vọng của tôi và những gì tôi đã thử.Giải pháp xác thực và ủy quyền cho Padrino

Với Sinatra, tôi sử dụng thành công đá quý sinatra-authentication cùng với đá quý role_model. Tôi thường sử dụng Mongoid ORM để nói chuyện với MongoDB. Hai viên đá quý này cùng nhau cho phép tôi chăm sóc authetication, bảo vệ các tuyến đường, kiểm tra vai trò của người dùng đăng nhập để áp dụng kiểm soát truy cập.

xác thực sinatra không hoạt động với Padrino - điều này rất cụ thể đối với Sinatra. Tôi đã thử nó nhiều lần. Tôi đã thử cả omniauth và warden với các mô-đun Padrino tương ứng nhưng vì một lý do nào đó, tôi không thể làm cho chúng hoạt động đơn giản như đá quý sinatra-autentication tuyệt vời. Vì vậy - trước khi tôi có thể thử thực hiện một giải pháp của riêng mình (hoặc chuyển xác thực sinatra cho Padrino) - bất kỳ ai cũng có thể đề xuất bất kỳ giải pháp xác thực và ủy quyền nào khác không? Tại thời điểm này tôi không cần bất kỳ thứ gì lạ mắt - xác thực dựa trên cơ sở dữ liệu đơn giản sẽ hoạt động hoàn hảo.

Trả lời

0

Tôi khuyên bạn nên sử dụng giải pháp xác thực nội tuyến, chỉ cần nhìn vào padrino-admin, bạn có thể sử dụng Padrino :: Authentication mà không cần quản trị bên trong bất kỳ ứng dụng nào bạn cần.

Nó khá đơn giản, vai trò/đường dẫn.

http://www.padrinorb.com/api/Padrino/Admin/AccessControl/Base.html#allowed%3F-instance_method

+3

Sử dụng padrino-admin buộc bạn làm việc với mô hình tài khoản được tạo ra bởi admin (hoặc workaround nó); có thể không tối ưu cho OP. Quan trọng hơn, có những vấn đề an ninh mở (https://github.com/padrino/padrino-framework/issues/384) bất cứ ai triển khai padrino-admin trong sản xuất nên lưu ý. – pithyless

+2

Vấn đề bảo mật đó đã bị đóng 2 năm trước, người xem tương lai fyi – Jonah

1

Một giải pháp xác thực độc lập cho Padrino has been discussed, nhưng chưa được giải quyết chưa. Trong thời gian đó, một gợi ý phổ biến là sử dụng padrino-warden.

Tuyên bố từ chối trách nhiệm: Tôi đang ở trong tình huống tương tự như OP và chưa có kinh nghiệm trong việc điều hành công cụ quản lý cá nhân trong sản xuất.

+0

Yup, để làm sáng tỏ điều này - điều này đã được lên lịch cho phiên bản v1.0. Chúng tôi có thể sẽ triển khai API để cắm giải pháp của riêng bạn (cùng với đề xuất/đề xuất) và các mối quan tâm riêng biệt giữa ủy quyền và xác thực. Tiếp tục theo dõi vấn đề được đánh dấu bằng @pithyless. –

1

Ryan Bates có một màn hình Rails tuyệt vời về cách thực hiện điều này (không miễn phí: http://railscasts.com/episodes/250-authentication-from-scratch-revised).

Không quá khó để thích ứng với số Rails Magic và thực hiện tương tự đối với Sinatra hoặc Padrino.

Bây giờ, điều này có thể không phù hợp nếu bạn cần tấn các tính năng như mật khẩu bị quên, vv Nhưng một lần nữa, chúng không quá khó để thích nghi.

3

Tôi biết rằng câu hỏi là hai tuổi. Nhưng gần đây tôi vẫn gặp phải rắc rối tương tự mà người canh gác padrino-warden ghi chép và tôi gặp rất nhiều vấn đề. Vì vậy, tôi ghi lại các phát hiện của mình trên workaround.org. Có thể nó giúp người kém may mắn hơn.

Tôi coi padrino-admin là giàn giáo đẹp để học hỏi. Nhưng mô hình người dùng khá là không linh hoạt. Và khái niệm ủy quyền là lạ lùng làm những gì các tác giả của Padrino không thích: đặt đường dẫn cấu hình ở vị trí trung tâm thay vì di chuyển cấu hình vào bộ điều khiển. (Các padrino-admin có vấn đề hơn nữa như thiếu pagination và thiếu hỗ trợ cho các phím nước ngoài. Vì vậy, nó không phải từ xa so sánh với những gì Django cung cấp.)

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