django-pyroven is een Django app die een Django authenticatie backend die kunnen worden toegevoegd aan AUTHENTICATION_BACKENDS in de Django instellingen module biedt:
AUTHENTICATION_BACKENDS = (
& Nbsp; 'pyroven.pyroven_django.RavenAuthBackend',
& Nbsp; 'django.contrib.auth.backends.ModelBackend'
)
Dit maakt het mogelijk zowel normale Django login en Raven login.
Iets met behulp van pyroven moet ervoor zorgen dat de configuratie is geladen; Dit wordt gedaan door het instellen van de config variabele in de Raven singleton class:
van pyroven import RavenConfig
van pyroven.pyroven_django import Raven
def configureren ():
& Nbsp; r = Raven ()
& Nbsp; als r.config is Geen:
& Nbsp; r.config = RavenConfig ("raven.ini")
De login pagina moet gebruikers omleiden naar Raven:
def raven_login (aanvraag):
& Nbsp; # Zorgen we zijn goed geconfigureerd
& Nbsp; configure ()
& Nbsp; # Haal de Raaf object en terug te keren een redirect naar de Raven server
& Nbsp; r = Raven ()
& Nbsp; return r.get_login_redirect ()
Wanneer de gebruiker is geverifieerd met Raven, zal de Raven server hen redirect terug naar uw site (de exacte URL is opgegeven in het INI-bestand hierboven). De terugkeer pagina moet bellen met de Django authenticeren en ingelogd functies met een token ontvangen van de Raven server via HTTP GET:
van django.contrib.auth import authenticeren, login
def raven_return (aanvraag):
& Nbsp; # Zorgen we zijn goed geconfigureerd
& Nbsp; configure ()
& Nbsp; # Haal de token die de Raaf server stuurde ons - dit moet echt
& Nbsp; # hebben een try / behalve rond het naar KeyError vangen
& Nbsp; token = request.GET ['WLS-Response']
& Nbsp; # zien of dit een geldige kaart
& Nbsp; user = authenticeren (response_str = token)
& Nbsp; als de gebruiker is Geen:
& Nbsp; # Een soort van err
& Nbsp; anders:
& Nbsp; ingelogd (aanvraag, gebruiker)
& Nbsp; # Redirect ergens verstandige
& Nbsp; terug HttpResponseRedirect ('/')
Het INI-bestand waarin de Raaf instellingen uit worden geladen heeft de volgende indeling:
[Raaf]
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': '/ pad / naar / pubkey2.crt'}
Eisen
- Python
- Django
Reacties niet gevonden