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.