6

Obecnie rozwijam witrynę Django, w której użytkownicy mogą mieć wiele "kont", dzięki czemu mogą płynnie przełączać się między różnymi profilami publicznymi podczas interakcji za pośrednictwem witryny. To, co projektuję, może przyciągnąć wiele rejestracji na osobę (i nie będzie zniechęcać), po prostu chciałbym zaoferować to w taki sposób, aby użytkownicy mogli zachować profile powiązane, łatwo się przełączać i tylko logować w jeden raz.Logowanie dla wielu użytkowników Django - najlepsze podejście?

Oba podejścia myślałem aż do tej pory to:

  • One (User modelu + SiteProfile model) parę i wiele PublicProfile modele na osobę. AUTH_PROFILE_MODULE jest ustawiony, aby wskazywać model SiteProfile. Problem polega na tym, że nie mogę łatwo użyć uprawnień dla poszczególnych obiektów: zostaną one ustawione na obiekcie User, a nie na profilu publicznym, a zatem uprawnienia do wyświetlania strony dla "PublicProfileA" będą również stosowane, gdy użytkownik zacznie maskować jako "PublicProfileB".

  • Jeden Account modelu i wiele (User modelu + UserProfile modelu) pary osobę. AUTH_PROFILE_MODULE jest ustawiony, aby wskazywać model UserProfile. Miałoby to dodatkową zaletę, gdyby uprawnienia działały zgodnie z założeniami oraz, że mogę po prostu mieć niestandardowy backend, który przełącza użytkowników przez uwierzytelnienie użytkownika, jeśli są oni obecnie zalogowani jako inny użytkownik, który ma ten sam obiekt Account jako klucz obcy. . Uwierzytelnienie mogłoby się odbyć przez odczyt pól na obiekcie Account, co oznaczałoby, że pole password na każdym obiekcie zostałoby zmarnowane.

  • Jak wyżej, ale podklasy Account z User. Odradza mi się jednak mocno (z powodów niejasnych).

Czy są jakieś pułapki lub lepsze sposoby podejścia do tego? Ostatecznie, czy powinienem używać wbudowanego modelu User jako modelu "jeden na osobę", który identyfikuje grupę publicznych profilów licowania (z których te profile mają FK z powrotem do obiektu User) lub używają go jako samego profilu, łącząc z powrotem do pojedynczego obiektu Account dla każdej osoby?

+0

Interesujące pytanie. Czy możesz podać nieco więcej kontekstu na temat tego, co oferują te różne profile? na przykład Jeśli budujesz witrynę e-commerce, Twoi użytkownicy mogą mieć konta osobiste i konta firmowe. Wpłynęłoby to na przykład na politykę rabatową, ilość/objętość zamówienia itp. Te informacje pomogłyby w uzyskaniu bardziej świadomej sugestii. – rantanplan

+0

Wow, przepraszam, że tak późno! Jest to strona społecznościowa, której jedną funkcją jest element RPG. Wszystkie konta są "równe" pod warunkiem, że nie mają oddzielnych "typów", nie ma czegoś takiego jak konto Corperate lub konto osobiste, po prostu "Członkowie". Ponadto i tak będą tworzone niestandardowe backendi uwierzytelniania, ponieważ wbudowany mechanizm autouzupełniania Django nie spełnia moich potrzeb. Mam nadzieję, że pomaga! –

Odpowiedz

0

Tak, myślę, że najlepszym podejściem byłoby posiadanie jednego i tylko jednego użytkownika na osobę i kilku obiektów PublicProfile, które mogą "przełączać" pomiędzy. Daje to korzyść tylko jednej nazwie użytkownika/hasłu i wydaje się, że ma to największy sens z tym, jak zwykle działa autoryzacja Django.