2009-09-29 16 views
6

Ho recentemente iniziato a studiare/utilizzare django; Sto cercando di capire un modo per avere due sistemi di autenticazione separati per amministratori e utenti. Piuttosto che creare un sistema di autenticazione completamente nuovo, mi piacerebbe sfruttare le funzionalità integrate di django (ad esempio la gestione delle sessioni, @login_required decorator, ecc.).Sistema di autenticazione utente/utente separato in Django

In particolare, desidero avere due tabelle di accesso separate - una per gli amministratori, una per gli utenti. La tabella di login dell'amministratore dovrebbe essere la tabella predefinita che django genera con i suoi campi predefiniti (ad esempio id, username, email, is_staff, etc.). La tabella utente, d'altra parte, voglio avere solo campi - id, email, password, first_name, last_name. Inoltre, voglio utilizzare la gestione della sessione integrata di django sia per le tabelle di login sia per il decoratore @login_required per le rispettive viste. Infine, voglio due moduli di accesso separati e distinti per amministratori e utenti.

Qualcuno ha qualche suggerimento su come posso raggiungere il mio obiettivo o sapere di articoli/esempi che potrebbero aiutarmi?

+0

Le autorizzazioni non sono già sufficienti per la maggior parte delle attività? Gli amministratori sono solo utenti con autorizzazioni appropriate. E ci sono anche 'user.is_staff' /' user.is_superuser' se non vuoi permetterne le autorizzazioni. – drdaeman

+0

Sembra che la mia domanda non sia chiara; Ho modificato la mia domanda aggiungendo ulteriori dettagli e specifiche, sperando di renderla più chiara. Grazie per l'intuizione/aiuto. – Dan

risposta

1

Se ho compreso correttamente la tua domanda (e forse non lo so), penso che tu stia chiedendo come creare un modulo di accesso separato per gli utenti non amministratori, mentre si utilizzano ancora i meccanismi di autenticazione standard di Django, modello User, ecc. Questo è supportato nativamente da Django attraverso le viste in django.contrib.auth.views.

Si desidera iniziare con django.contrib.auth.views.login. Aggiungere una riga al vostro urlconf in questo modo:

(r'^/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}) 

Il login vista generica accetta il parametro template_name, che è il percorso per il modello di accesso personalizzato (c'è un generico si può usare pure, fornito da django.contrib.auth) .

La documentazione completa su login, logout, password_change e altre viste generiche sono disponibili in Django Authentication Docs.

0

Modificare leggermente le cose in modo che gli utenti abbiano un prefisso di categoria sul proprio nome utente? Non ci hai fornito molte informazioni su ciò che vuoi fare, è possibile che le tue esigenze vengano soddisfatte utilizzando la struttura dei siti o semplicemente due installazioni separate di django.

Se ciò che si sta tentando di fare è rendere separata la pagina di accesso utente e la pagina di accesso amministratore, basta usare il framework integrato come descritto nei documenti per creare una pagina di accesso "utente" e lasciare l'amministratore solo . Se sei preoccupato che gli utenti in qualche modo inizieranno a modificare i file di accesso dell'amministratore, non farlo, lo faranno a meno che tu non li permetta.

1

È possibile scrivere uno o più back-end di autenticazione personalizzati. Questo è documentato here. Ad esempio, ho scritto un back-end personalizzato per l'autenticazione con un server LDAP.

Problemi correlati