J'essaie de permettre aux utilisateurs de se connecter à mon application Flask en utilisant leurs comptes depuis un service Web distinct. Je peux contacter l'API de ce service web et recevoir un jeton de sécurité. Comment puis-je utiliser ce jeton pour authentifier les utilisateurs afin qu'ils aient accès aux vues restreintes?Comment implémentez-vous l'authentification par jeton dans Flask?
Je n'ai pas besoin de sauvegarder les utilisateurs dans ma propre base de données. Je veux seulement les authentifier pour une session. Je crois que cela peut être fait en utilisant Flask-Security et le décorateur @auth_token_required mais la documentation n'est pas très détaillée et je ne suis pas sûr de savoir comment l'implémenter.
EDIT:
Voici un exemple de code:
@main.route("/login", methods=["GET", "POST"])
def login():
payload = {"User": "john", "Password": "password123"}
url = "http://webserviceexample/api/login"
headers = {'content-type': 'application/json'})
#login to web service
r = requests.post(url, headers=headers, json=payload)
response = r.json()
if (r.status_code is 200):
token = response['user']['authentication_token']
# allow user into protected view
return render_template("login.html", form=form)
@main.route('/protected')
@auth_token_required
def protected():
return render_template('protected.html')
Vous devez stocker les utilisateurs avec le jeton; et confirmez la validité du jeton par rapport au service. Sinon, vous devrez authentifier les visiteurs chaque fois contre le service de tiers à chaque fois qu'ils commencent. –
À chaque fois, voulez-vous dire pour chaque session? Si c'est le cas, c'est bien qu'ils devraient s'authentifier à nouveau. Y a-t-il une raison pour que ce soit un problème? – Amerikaner