2010-04-20 4 views
0

aujourd'hui j'ai essayé d'obtenir django-piston et ExtJS travaillant. J'ai utilisé l'exemple reposant ExtJS et l'exemple du piston pour créer une petite application web reposante. Tout fonctionne bien sauf l'authentification.(O) Auth avec ExtJS

Quel est le meilleur moyen d'obtenir l'authentification Basic/Digest/OAuth avec ExtJS? Je ne sais pas où placer le nom d'utilisateur/mot de passe.

Merci

Répondre

0

Si vous souhaitez utiliser avec piston ExtJS, je vous suggère d'écrire un gestionnaire anonyme qui vérifie l'utilisateur est connecté via auth standard.

Essayez ceci:

class AnonymousUserProfileHandler(BaseHandler): 
    fields = ('title', 'url', 'affiliation') 
    model = UserProfile 

    def read(self, request, nickname): 
     profile = UserProfile.objects.get(nickname=nickname) 

     if request.user == profile.user: 
      return profile 

class UserProfileHandler(BaseHandler): 
    anonymous = AnonymousUserProfileHandler 
    allowed_methods = ('GET') 
    fields = ('title', 'url', 'affiliation') 
    model = UserProfile 

    def read(self, request, nickname): 
     profile = UserProfile.objects.get(nickname=nickname) 
      return profile 

Dans cet exemple, lorsque UserProfileHandler est appelé, sans autorisation, il délègue au gestionnaire anonyme. Le gestionnaire anonyme vérifie si l'utilisateur est connecté via le mode request.user habituel. S'il y a un utilisateur valide, il retourne son objet de profil. Vous devrez alors, de toute évidence, marquer la vue appelant cela comme nécessitant une connexion.

Le point est: quand extJS fait son appel JSON, il va envoyer des données d'authentification via le cookie habituel. Si vous utilisez un gestionnaire "anonyme" dans Piston, mais que vous vérifiez manuellement que l'utilisateur est connecté avant de renvoyer les données, vous utilisez essentiellement l'authentification traditionnelle pour votre propre site.