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 wielePublicProfile
modele na osobę.AUTH_PROFILE_MODULE
jest ustawiony, aby wskazywać modelSiteProfile
. Problem polega na tym, że nie mogę łatwo użyć uprawnień dla poszczególnych obiektów: zostaną one ustawione na obiekcieUser
, 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ć modelUserProfile
. 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 obiektAccount
jako klucz obcy. . Uwierzytelnienie mogłoby się odbyć przez odczyt pól na obiekcieAccount
, co oznaczałoby, że polepassword
na każdym obiekcie zostałoby zmarnowane.Jak wyżej, ale podklasy
Account
zUser
. 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?
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
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! –