6

Tôi hiện đang phát triển một trang web Django, trong đó người dùng có thể có nhiều 'tài khoản', để họ có thể chuyển đổi liền mạch giữa các hồ sơ công khai khác nhau khi tương tác thông qua trang web. Những gì tôi thiết kế có khả năng thu hút nhiều đăng ký cho mỗi người (và sẽ không được khuyến khích), tôi chỉ muốn cung cấp điều này theo cách mà người dùng có thể giữ các cấu hình được gắn với nhau, chuyển đổi dễ dàng và chỉ phải đăng nhập trong một lần.Đăng nhập nhiều người dùng Django - cách tiếp cận tốt nhất?

Hai cách tiếp cận tôi đã nghĩ ra cho đến nay bao gồm:

  • One (User mô hình + SiteProfile mô hình) cặp và nhiều PublicProfile mô hình cho mỗi người. AUTH_PROFILE_MODULE được đặt để trỏ đến mô hình SiteProfile. Vấn đề với điều này là tôi không thể dễ dàng sử dụng quyền đối với mỗi đối tượng: chúng sẽ được đặt trên đối tượng User chứ không phải hồ sơ công khai, do đó quyền xem trang "PublicProfileA" cũng sẽ được áp dụng khi người dùng giả mạo là "PublicProfileB".

  • Một mô hình Account và nhiều mô hình (User mô hình + UserProfile mô hình) cho mỗi người. AUTH_PROFILE_MODULE được đặt để trỏ đến mô hình UserProfile. Điều này sẽ có lợi ích bổ sung của các quyền làm việc như dự định, và rằng tôi có thể chỉ cần có một Backend tùy chỉnh sẽ chuyển người dùng bằng cách xác thực người dùng nếu họ hiện đang đăng nhập với tư cách người dùng khác có cùng đối tượng Account làm khóa ngoại . Việc xác thực sẽ xảy ra bằng cách đọc các trường trên đối tượng Account, điều này có nghĩa là trường password trên mọi đối tượng User sẽ bị lãng phí.

  • Như trên, nhưng phân lớp Account từ User. Tôi đã được tư vấn mạnh mẽ chống lại điều này mặc dù (vì lý do không rõ ràng).

Có bất kỳ cạm bẫy hoặc phương pháp tiếp cận nào tốt hơn không? Cuối cùng, tôi nên sử dụng mô hình User được tích hợp làm mô hình một người xác định một nhóm hồ sơ công khai (trong đó các cấu hình này có FK quay lại đối tượng User) hoặc sử dụng làm hồ sơ, liên kết trở lại một đối tượng Account cho mỗi người?

+0

Câu hỏi thú vị. Bạn có thể cung cấp thêm một chút ngữ cảnh về những gì các cấu hình khác nhau này sẽ cung cấp không? ví dụ. Nếu bạn đang xây dựng trang web thương mại điện tử, người dùng của bạn có thể có tài khoản cá nhân và tài khoản công ty. Điều này sẽ ảnh hưởng đến chính sách chiết khấu ví dụ, số lượng/số lượng đặt hàng vv Thông tin này sẽ giúp đưa ra đề xuất sáng suốt hơn. – rantanplan

+0

Wow, xin lỗi vì điều này đã quá muộn! Đây là trang web xã hội, một chức năng là yếu tố đóng vai trò. Tất cả các tài khoản là 'bình đẳng' liên quan đến họ sẽ không có riêng biệt 'loại', không có những điều như một tài khoản Corperate hoặc cá nhân, chỉ đơn giản là 'Thành viên'. Ngoài ra, sẽ có phần phụ trợ xác thực tùy chỉnh được viết bằng văn bản, vì phần phụ trợ của Django auth không đáp ứng được nhu cầu của tôi. Hy vọng rằng sẽ giúp! –

Trả lời

0

Có, tôi nghĩ cách tiếp cận tốt nhất là có một và chỉ một Người dùng cho mỗi người và một số đối tượng PublicProfile mà họ có thể "chuyển đổi" giữa. Điều này mang lại lợi ích của chỉ có một tên người dùng/mật khẩu cho họ và dường như làm cho ý nghĩa nhất với cách auth của Django thường hoạt động.

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