Actuellement, je fais une application qui utilise Django Rest Framework comme API et iOS (Swift) comme interface avec Alamofire pour les appels d'API. Cependant, j'ai rencontré un problème avec l'authentification des utilisateurs - chaque fois que je tente de faire une demande POST pour connecter un utilisateur à l'aide Alamofire, je suis frappé avec cette erreur 403:Jeton Django CSRF manquant pour iOS Publier une demande
Voici mon login Mise en service avec Alamofire:
func loginUser(data: Parameters) {
let finalUrl = self.generateUrl(addition: "auth/login/")
print(finalUrl)
let header: HTTPHeaders = [ "Accept": "application/json", "Content-Type" :"application/json"]
Alamofire.request(finalUrl,method: .post, parameters: data, encoding: JSONEncoding.default, headers: header).responseString { (response:DataResponse<String>) in
print(data)
switch(response.result) {
case .success(_):
if response.result.value != nil {
print(response.result.value!)
}
break
case .failure(_):
print(response.result.error!)
break
}
}
}
du côté de l'API, le login J'utilise est celui fourni par rest_framework.urls ...
url(r'^auth/', include('rest_framework.urls', namespace='rest_framework'))
Alors que des conseils de simil a.) Exempter mes vues d'exiger un jeton CSRF (je ne suis pas sûr si c'est même possible dans mon cas - mes vues sont incluses avec include() dans le cadre du régime de rest_framework.urls si la décoration avec csrf_exempt ne peut pas travailler)
b.) Obtenir un jeton CSRF pour mes requêtes POST en quelque sorte
alors que ce sont mes idées, je n'ai pas encore trouver une solution réelle ou une méthode pour les implémenter, donc toute aide serait grandement appréciée!
Emettez une requête get dans le jeton de capture csrf de connexion, puis utilisez-la dans la requête POST. –
Si vous utilisez des vues basées sur les classes, assurez-vous d'ajouter _ViewName.as_view() _ dans urls.py. Cela a fonctionné pour moi! – Mirza715