django-pyroven è un app Django che fornisce un backend di autenticazione Django che può essere aggiunto al AUTHENTICATION_BACKENDS nel modulo impostazioni Django:
AUTHENTICATION_BACKENDS = (
& Nbsp; 'pyroven.pyroven_django.RavenAuthBackend',
& Nbsp; 'django.contrib.auth.backends.ModelBackend'
)
Questo permette sia normale login Django e Raven login.
Tutto ciò utilizzando pyroven dovrebbe assicurarsi che la configurazione sia caricata; questo è fatto impostando la variabile di configurazione nella classe Singleton Raven:
da pyroven RavenConfig import
da pyroven.pyroven_django import Raven
def configurare ():
& Nbsp; r = Raven ()
& Nbsp; se r.config è None:
& Nbsp; r.config = RavenConfig ("raven.ini")
La pagina di login dovrebbe reindirizzare gli utenti a Raven:
def raven_login (richiesta):
& Nbsp; # garantire siamo stati configurati correttamente
& Nbsp; configure ()
& Nbsp; # Prendi l'oggetto Raven e restituire un redirect al server Raven
& Nbsp; r = Raven ()
& Nbsp; ritorno r.get_login_redirect ()
Quando l'utente è autenticato con Raven, il server Raven reindirizzerà di nuovo al vostro sito (l'URL esatto è specificata nel file .ini sopra). La pagina di ritorno deve chiamare il Django autenticazione e le funzioni di accesso con un token ricevuto dal server di Raven via HTTP GET:
da django.contrib.auth autenticazione import, login
def raven_return (richiesta):
& Nbsp; # garantire siamo stati configurati correttamente
& Nbsp; configure ()
& Nbsp; # Prendi il token che il server Raven ci ha inviato - questo dovrebbe davvero
& Nbsp; # avere una prova / tranne intorno a catturare KeyError
& Nbsp; di token = request.GET ['WLS-risposta']
& Nbsp; # Vedere se questo è un segno valido
& Nbsp; user = authenticate (response_str = token)
& Nbsp; se l'utente è None:
& Nbsp; # Una sorta di err
& Nbsp; il resto:
& Nbsp; login (richiesta, utente)
& Nbsp; # Redirect da qualche parte sensibile
& Nbsp; tornare HttpResponseRedirect ('/')
Il file .ini che le impostazioni Raven vengono caricate da ha il seguente formato:
[Corvo]
login_url = "http://raven.cam.ac.uk/auth/authenticate.html"
logout_url = "http://raven.cam.ac.uk/auth/logout.html"
return_url = "http://your.server.cam.ac.uk/ravenreturn/"
pubkeys = {'2': '/ path / to / pubkey2.crt'}
Requisiti :
- Python
- Django
I commenti non trovato