Frage

Ich erstelle eine multiple-Tenant-Anwendung, die eine der Standard Django Admin nicht (außer für den internen Gebrauch, die den Zugriff auf alle Mieter haben ..., die einfach genug ist) verwenden. Ich versuche, ein Berechtigungssystem von meinem eigenen zu schaffen, und ich bin nicht in mit dem Standard-User-Modell (oder eine integrierte Anwendung des Modells) interessiert. Meine Anwendung Konten hat, und jedes Konto-Administratoren (zum Gebrauch Administrator hatte vs Benutzer für Namen-Clash Zwecke) hat. Diese Benutzer authentifizieren mein eigenes komplett eigenes System. Ist das alles falsch. Sollte / kann ich immer noch Djangos Auth-System in einer Mehr Tennant Situation benutzen, der meine eigene benutzerdefinierte Schnittstelle verwendet (wie erwähnt, bevor ich damit nicht Kontoinhaber sein werde, das Standard-Admin-Interface verwenden). Gibt es Auswirkungen auf die Sicherheit in meinem eigenen System oder haben Djangos Standard-Sicherheitselemente wie Session-Hijacking Prävention schützen mich?

Es scheint mir, dass eine Menge von Django ist die Idee, die Admin-Oberfläche gebaut um und nicht den Aufbau Multi-Tenant-SaaS-Software mit Ihrem eigenen Admin. Bin ich denke an diese alle falsch?

War es hilfreich?

Lösung

Sie sollten auf jeden Fall Django Auth-System verwenden, tut es immer noch 90% von dem, was Sie benötigen.

Ich habe gebaut, was in einem Projekt genau wie Ihre scenarion aussieht:. Firmenkunden, die jeweils mit Admin-Benutzer und mehrere regelmäßigen Nutzer

Hier Modellstruktur I verwendet:

class Account(models.Model): # represents copporate customer
    admin = models.ForeignKey(User)
    # other fields ...

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    account = models.ForeignKey(Account)

Und einige Beispiele für die Durchsetzung Zulassungsanforderungen auf Ansichtsebene mit benutzerdefinierten Dekorateure:

@account_access_required # request.user.get_profile().account == account
def account_page(request, account_id):
    # ...

@account_admin_required # request.user == account.admin
def account_users(request, account_id):
    # ...

Wir tatsächlich verwendete Sub-Domains für Konten, so gab es keine Notwendigkeit für explizite account_id Parameter.

Es ist sehr vernünftig benutzerdefinierte Schnittstelle für Konto-Administratoren zu verwenden. Django Admin-Interface soll nur für 100% Vertrauenswürdig- Benutzer wie System admininstators und internen Support-Mitarbeiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top