J'ai une question similaire à celle -
Conditional login redirect in DjangoDjango redirige le bon chemin?
Mais je ne pouvais pas comprendre comment obtenir le résultat de réponses là-bas.
Je suis relativement nouveau à django. J'ai réutilisé ce code quelque part, qui redirige l'utilisateur vers la page de connexion. Mais après la connexion, je me rends toujours à la page de démarrage/home de l'utilisateur. Je veux qu'ils voient la page qu'ils ont vraiment demandée, et non la page d'accueil de l'utilisateur tout le temps. Pouvez-vous me dire quoi et où je peux faire le changement, il devrait être où j'utilise la fonction «rediriger». Je devrais probablement enregistrer une variable de session et le faire mais pas tout à fait le point de départ. Des pensées?
est sous le code -
def view_or_basicauth(view, request, test_func, realm = "", *args, **kwargs):
if test_func(request.user): # Already logged in, just return the view.
return view(request, *args, **kwargs)
# They are not logged in. See if they provided login credentials
if 'HTTP_AUTHORIZATION' in request.META:
auth = request.META['HTTP_AUTHORIZATION'].split()
if len(auth) == 2:
# NOTE: We are only support basic authentication for now.
if auth[0].lower() == "basic":
uname, passwd = base64.b64decode(auth[1]).split(':')
user = authenticate(username=uname, password=passwd)
if user is not None:
if user.is_active:
login(request, user)
request.user = user
return view(request, *args, **kwargs)
# Either they did not provide an authorization header or something in the authorization attempt failed. Send a 401 back to them to ask them to authenticate.
key = request.path.split('/')
if len(key) > 1:
base_url = request.get_host()
return redirect('https://' + base_url + '/login/')
s = '401 Unauthorized'
response = HttpResponse(s)
response.status_code = 401
response['Content-Length'] = '%d' % len(s)
response['WWW-Authenticate'] = 'Basic realm="%s"' % realm
return response
Vous ne devriez normalement pas utiliser l'authentification de base. À moins d'être cryptées par SSL, les informations d'identification sont transférées sur * chaque * demande en * texte clair *. C'est beaucoup trop vulnérable pour la plupart des sites. 'django.contrib.auth' (http://docs.djangoproject.com/fr/dev/topics/auth/) fournit une solution basée sur les sessions, idéale pour la majorité des utilisateurs, ou utilise django-openid (https://github.com/simonw/django-openid) – SingleNegationElimination