django-pyroven er en Django app som gir en Django autentisering backend som kan legges til AUTHENTICATION_BACKENDS i Django modulen i innstillingene:
AUTHENTICATION_BACKENDS = (
& Nbsp; 'pyroven.pyroven_django.RavenAuthBackend',
& Nbsp; 'django.contrib.auth.backends.ModelBackend'
)
Dette gjør at både normal Django innlogging og Raven innlogging.
Noe hjelp pyroven bør sørge for at konfigurasjonen er lastet; Dette gjøres ved å sette config variabel i Raven singleton klasse:
fra pyroven import RavenConfig
fra pyroven.pyroven_django import Raven
def konfigurere ():
& Nbsp; r = Raven ()
& Nbsp; hvis r.config er None:
& Nbsp; r.config = RavenConfig ("raven.ini")
Påloggingssiden skal omdirigere brukere til Raven:
def raven_login (forespørsel):
& Nbsp; # Sikre vi er riktig konfigurert
& Nbsp; konfigurere ()
& Nbsp; # Få Ravn objekt og returnere en omdirigering til Raven serveren
& Nbsp; r = Raven ()
& Nbsp; retur r.get_login_redirect ()
Når brukeren har autentisert med Raven, vil Raven serveren omdirigere dem tilbake til nettstedet ditt (det eksakte URL er angitt i INI-filen ovenfor). Avkastningen side bør ringe Django godkjenne og innloggingsfunksjoner med en token mottatt fra Raven server via HTTP GET:
fra django.contrib.auth import authenticate, innlogging
def raven_return (forespørsel):
& Nbsp; # Sikre vi er riktig konfigurert
& Nbsp; konfigurere ()
& Nbsp; # Få token som Ravn serveren sendte oss - dette burde virkelig
& Nbsp; # ha en prøve / unntatt rundt det å fange KeyError
& Nbsp; token = request.GET ['WLS-Response']
& Nbsp; # Se om dette er en gyldig token
& Nbsp; user = Godkjenn (response_str = token)
& Nbsp; hvis brukeren er None:
& Nbsp; # En slags err
& Nbsp; annet:
& Nbsp; innlogging (forespørsel, bruker)
& Nbsp; # Omadresser et fornuftig
& Nbsp; returnere HttpResponseRedirect ('/')
INI-filen som Raven innstillingene er lastet fra har følgende format:
[Ravn]
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': '/ sti / til / pubkey2.crt'}
Krav :
- Python
- Django
Kommentarer ikke funnet