2011-10-17 41 views
41

Tôi đang xây dựng một ứng dụng web và cần thiết để lựa chọn giữa Django và Kim tự tháp. Tôi quyết định đi với Pyramid.Xác thực người dùng trong Pyramid

Tôi hiểu Kim tự tháp có khung xác thực/ủy quyền của riêng nó trông đẹp mắt. Nhưng tôi đã không thấy bất cứ nơi nào trong Kim tự tháp nơi người dùng/nhóm/quyền được xác định. Trong Django những điều này đến miễn phí.

Tôi đang sử dụng SQLAlchemy và tự hỏi liệu có người dùng/nhóm/quyền tương tự đã được tạo mà tôi có thể nhập hay không. Tôi không muốn xác định các đối tượng/ánh xạ và băm/salting của mật khẩu bản thân mình.

Django's definitions những thứ này là khá nhiều tất cả những gì tôi cần.

Có ai có thể chỉ cho tôi thứ gì đó tôi có thể sử dụng không? Hay tôi cần phải cuộn của riêng tôi?

Trả lời

62

Kim tự tháp có hệ thống xác thực linh hoạt hơn nhiều. Và có, nếu bạn muốn một cái gì đó đơn giản như khái niệm người dùng/nhóm/quyền của Django, sau đó linh hoạt có thể là đáng sợ.

Kim tự tháp không có đối tượng "Người dùng", vì nó không đưa ra giả định về cách bạn lưu trữ dữ liệu hoặc ORM bạn sử dụng, do đó không có thứ gì đó bạn thích contrib.auth. Bạn sẽ cần phải băm/muối mật khẩu cho mình bằng cách sử dụng một thư viện như cryptacular hoặc passlib, cả hai được tìm thấy trên PYPI.

Theo như mong muốn người dùng/nhóm/quyền trong hệ thống của Kim tự tháp, điều này có thể đạt được khá đơn giản bằng cách xác định RootFactory có một __acl__ để ánh xạ nhóm thành quyền. Quyền được gán cho các khung nhìn, do đó thường khá tĩnh. Nếu bạn muốn các nhóm (những gì Kim tự tháp gọi "hiệu trưởng") là năng động cũng có thể đạt được.

Tôi khuyên bạn nên xem Kim tự tháp wiki2 tutorial, cũng như shootout demo.

Ngoài ra còn có một vài gói của bên thứ ba để hỗ trợ ủy quyền trong Pyramid nếu bạn định sử dụng SQLAlchemy. apex là giải pháp ngăn xếp đầy đủ hơn và ziggurat_foundations là lớp cấp thấp hơn trên SQLAlchemy để giúp bạn thiết lập người dùng và nhóm cho ứng dụng của bạn.

Câu hỏi của bạn khá cao và ủy quyền là một "vấn đề khó", vì vậy tôi sẽ dừng lại ở đây và tránh sửa lại các hướng dẫn và tài nguyên đã tồn tại từ hướng dẫn Kim tự tháp đến một số ví dụ của bên thứ ba. Nếu bạn có bất kỳ câu hỏi cụ thể nào, vui lòng hỏi những câu hỏi đó trong câu hỏi khác.

+0

Cảm ơn, đó là thông tin tốt. Tôi càng xem xét việc thực hiện của django (và kết hợp với repsonse của bạn quá), tôi càng nhận ra câu hỏi này là nhiều hơn một câu hỏi SQLAlchemy vì bất kỳ đối tượng liên quan 'Người dùng' sẽ cần phải được gắn với SQLAlchemy. – lostdorje

+2

Cảm ơn bạn đã trỏ đến bản giới thiệu loạt đá luân lưu. Được viết rất tốt với các mô hình Người dùng và Nhóm đầy đủ, cũng như một bộ kiểm tra đầy đủ. –

+0

Hãy tốt đẹp nếu có nhiều công cụ dựng sẵn hơn về mặt xác thực, ngay cả khi tất cả (hoặc một phần) có thể bị thổi bay và thay thế bằng các công cụ tùy chỉnh cho người dùng nâng cao. Bạn có thể có một khái niệm về một người dùng mà không giả sử hệ thống lưu trữ miễn là bạn ghi lại các hoạt động cần được triển khai xung quanh nó cho các giải pháp tùy chỉnh. –

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