comment ajouter un jeton d'authentification à swagger + django repos cadre?
Je suis à l'aide de deux outils très efficaces DRF et Django-RESTE-Swagger, cependant quelques-uns de mes API points de vue sont, en vertu de jeton d'authentification.
Alors maintenant, je voudrais ajouter à mon swagger page de doc de mon API, la possibilité de tester ceux de jeton d'authentification api url, y compris le Jeton d'en-tête. Comment pourrais-je faire cela?.
Un instantané de ma classe de l'API de vue, c'est comme cela:
class BookList(APIView):
"""
List all books, or create a new book.
"""
authentication_classes = (TokenAuthentication, )
permission_classes = (IsAuthenticated,)
...
Depuis Swagger auto détecte beaucoup de choses, je m'attendais à un avis sur jeton d'authentification, et de me poser des questions sur jeton ou id d'utilisateur dans son interface web, mais il ne le fait pas. Donc je suis en train de tester manuellement via CURL commandes...
OriginalL'auteur miguelfg | 2014-07-21
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez l'authentification par jeton, vous voudrez peut-être regarder à cette question
Fondamentalement, vous avez juste besoin de les ajouter à vos
settings.py
:Dans votre Style de l'INTERFACE utilisateur de la page, vous devriez voir un Autoriser bouton. Cliquez sur et entrez votre Autorisation valeur dans le champ de saisie de texte.
Il n'a pas de travail pour moi. Essayé les deux Auth-Jeton et d'Autorisation.
il ne fonctionne pas pour moi non plus. Quand j'ai inspecter l'élément dans le navigateur, je ne vois pas d'en-tête de requête nouvellement ajouté
OriginalL'auteur Melvic Ybanez
Je me réponds car j'ai fait le travail.
Fait Swagger paramètres a une option pour cela, api_key ->
Pour moi, ce n'était pas tout à fait clair, mais j'ai juste l'entrée d'un jeton valide pour les tests de l'utilisateur et il a travaillé pour l'auth besoin de points de vue 🙂
avec le " api_key dans SWAGGER_SETTINGS, le mien est similaire à ça => "api_key": 'fasd12d1a7........c26f34r2f',
OriginalL'auteur miguelfg
Mon Problème est que après l'activation de TokenAuthentification mon url de l'api n'ont pas été montrés plus dans le style de l'INTERFACE utilisateur en raison d'une AuthentificationError.
Pour moi la solution est d'activer les deux authentaction classes dans le Django de Repos Cadre des Paramètres:
SessionAuthentification -> pour le Style de l'INTERFACE utilisateur
TokenAuthentification -> pour le Reste des Clients
}
OriginalL'auteur matyas
Le schéma doit avoir l'autorisation de AllowAny. Cela permet le plugin pour voir les points de terminaison sont disponibles avant que l'utilisateur est authentifié. La fin de points doivent encore être protégés s'ils sont configurés correctement. Exemple:
Il est préférable de retirer la SessionAuthentication et d'utiliser uniquement la TokenAuthentication mais c'est une question de choix, ici j'ai enlevé
Être sûr que c'ajouter
'rest_framework.authtoken'
dans vos applications installées et de supprimer lesCsrfViewMiddleware
du middleware classes comme il n'est plus nécessaire. Et l'arrogance des paramètresCela fera swagger remplir le jeton dans l'ensemble de l'exemple curl commandes, ce qui est vraiment agréable d'avoir. Laisser la session auth en place semble pour désactiver cette option.
L'arrogance d'autorisation de dialogue vous demande le
api_key
qui doit être fourni. Ne pouvez pas améliorer ce programme, permettra de mettre à jour ce post si je n'.OriginalL'auteur oden
si vous mettez en œuvre la réponse de @Melvic Ybanez et ne fonctionne toujours pas.
et vous utilisez django-reste-swagger==2.2.0 revenir à django-reste-swagger==2.1.2.
bouton Autoriser avez au travail aujourd'hui.
OriginalL'auteur Diego Puente
J'ai réussi à changer de Style par défaut de l'authentification de base de jeton d'authentification avec cette configuration mais quand j'essaie le bouton est pressé de repos swagger accepte toute authentification indépendamment de jeton valide.
Noter également, quand j'ai ajouté SessionAuthentication à mon REST_FRAMEWORK dans mon settings.py mon api n'a pas pu être affiché sur swagger docs.
django-reste-swagger==2.2.0
djangorestframework==3.7.7
settings.py
certains de la documentation utile https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-definitions-object
OriginalL'auteur Jade Dhangwattanotai