2011-02-23 5 views
0

Ok, donc cela semble mauvais (et c'est probablement le cas, mais j'ai assez de doutes en ce moment que je veux l'essayer). J'ai un site Web Django bases avec une application flash jwplayer intégré sur l'une des pages. L'utilisateur doit se connecter pour accéder à cette page. Le lecteur jwplayer ne fait que lire un flux icecast.Demande POST de Django pour authentifier une application avec Django

Ce que je voudrais/dois faire, c'est que seuls les utilisateurs authentifiés puissent accéder au serveur icecast. En ce moment, s'ils saisissent l'URL de la page Web, ils peuvent y accéder de manière plutôt triviale.

Icecast peut s'authentifier via POST que j'ai configuré dans une vue django. Donc, ce que je veux, c'est que le flashplayer envoie le nom d'utilisateur et le mot de passe de l'utilisateur connecté à icecast, qui s'authentifiera alors avec le même nom d'utilisateur et le même mot de passe. Mon problème est que django ne stocke pas le mot de passe réel, juste un hachage (une bonne chose) donc je commence à penser que je ne peux pas vraiment envoyer l'utilisateur et mot de passe à icecast pour authentifier avec. Mes autres pensées étaient simplement d'envoyer le nom d'utilisateur, et vérifier si cette personne a déjà authentifié.

Mais cela permettrait à quelqu'un d'écouter si quelqu'un était déjà connecté.

ce que je pourrais faire quelque chose avec une variable de session ou quelque chose?

Le gourou de Django m'aide! Je suis ouvert à toutes et à toutes les idées.

Salutations

Marque.

Répondre

0

Pourquoi ne pas demander à votre lecteur Flash de rechercher le cookie de session Django, puis de le valider par rapport au serveur Web auquel l'utilisateur est connecté?

Ajouter quelque chose comme ceci à vos urls:

(r'^loggedin/', logged_in_user), 

Ajouter une vue quelque chose comme ça (non testé):

from django.http import HttpResponseForbidden 
def logged_in_user(request): 
    if request.user.is_authenticated(): 
     return HttpResponseForbidden() 
    else: 
     response = HttpResponse(mimetype='text/plain') 
     response.write('ok') 
     return response 

Alors suffit de faire une obtenir sur le/loggedin/et vérifiez la code de retour, si c'est 200 ils sont connectés si 401 ils ne sont pas (en supposant que vous passez dans les cookies de session)

+0

ouais, j'ai pensé à faire quelque chose comme ça. Créez un cookie de session et demandez au serveur icecast de cliquer sur une URL qui le valide. Tout extrait de code que je pourrais être en mesure de regarder cela pourrait aider avec cela? Je n'ai pas utilisé les sessions django auparavant. –