L'authentification et l'autorisation des utilisateurs sont des facteurs très importants dans les applications Internet modernes. Le protocole OAuth (Open Authorization) est l'un des protocoles d'authentification et d'autorisation les plus couramment utilisés dans le développement Internet moderne. Cet article explique comment implémenter l'authentification OAuth à l'aide du framework Web Python Django et d'un package appelé django-allauth.
Django est un framework d'application Web gratuit et open source écrit en Python, qui aide les développeurs à créer rapidement des applications Web de haute qualité. django-allauth est un package Django qui fournit aux développeurs des fonctionnalités telles que l'authentification sociale, OAuth, OpenID et l'authentification par courrier électronique.
Tout d'abord, nous devons installer Django et Django-allauth. Vous pouvez utiliser l'outil pip pour installer, la commande est la suivante :
pip install django pip install django-allauth
Une fois l'installation terminée, nous devons ajouter les informations de configuration django-allauth au fichier settings.py de l'application Django. Ajoutez ce qui suit au bas du fichier :
INSTALLED_APPS = [ # ... 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', # ... ] AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', ] SITE_ID = 1 LOGIN_REDIRECT_URL = '/' ACCOUNT_EMAIL_VERIFICATION = 'none' SOCIALACCOUNT_QUERY_EMAIL = True SOCIALACCOUNT_PROVIDERS = { 'google': { 'SCOPE': ['profile', 'email'], 'AUTH_PARAMS': {'access_type': 'online'}, }, }
Dans la configuration ci-dessus, nous avons activé tous les plugins d'authentification et plugins sociaux pour Django et défini Google comme notre fournisseur OAuth.
Ajouter l'authentification OAuth à la vue :
Maintenant, nous devons ajouter la fonctionnalité d'authentification OAuth à la vue. Créez une vue appelée "login" et ajoutez-y le code suivant :
from allauth.socialaccount.models import SocialAccount from django.contrib.auth import login from django.contrib.auth.decorators import login_required from django.shortcuts import redirect, render @login_required def login(request): social_account = SocialAccount.objects.filter(user=request.user).first() if social_account: return redirect('/') social_login = request.session.get('sociallogin') if social_login: if social_login.account.provider == 'google': social_account = SocialAccount( user=request.user, provider=social_login.account.provider, uid=social_login.account.uid, extra_data=social_login.account.extra_data, ) social_account.save() return redirect('/') context = { 'google_login_url': '/accounts/google/login/', } return render(request, 'login.html', context)
Dans le code de cette vue, il vérifie d'abord si l'utilisateur est associé à un compte social, et si c'est le cas, il redirige directement vers la page d'accueil. Si l'utilisateur n'est pas associé à un compte social, vérifiez si la session de l'utilisateur est associée à des informations OAuth.
Si tel est le cas, nous vérifions si les informations OAuth appartiennent à un compte Google et les enregistrons en tant qu'objet SocialAccount. S'il n'y a pas de liaison, nous renvoyons un dictionnaire contenant l'URL de connexion Google et un modèle.
Enfin, nous devons ajouter une URL au modèle login.html sur lequel les utilisateurs peuvent cliquer pour démarrer l'authentification OAuth. Une variable appelée "google_login_url" est utilisée ici, nous la plaçons donc dans le contexte du modèle. Le code du modèle est le suivant :
{% extends 'base.html' %} {% block content %} <h1>Login</h1> <p>Please login with your Google account.</p> <a href="{{ google_login_url }}">Google Login</a> {% endblock %}
Enfin, nous devons ajouter le modèle d'URL d'authentification OAuth au fichier urls.py du projet. Ajoutez ce qui suit au bas du fichier :
from django.urls import include, path from django.contrib import admin urlpatterns = [ path('admin/', admin.site.urls), path('accounts/', include('allauth.urls')), path('', login, name='login'), ]
Notre fonctionnalité d'authentification OAuth est désormais terminée. Nous pouvons exécuter le serveur Django et accéder à la vue dans le navigateur. Cela passera à la page d'authentification OAuth de Google pour demander l'autorisation de l'utilisateur.
Après l'autorisation de l'utilisateur, il reviendra à notre application Django et redirigera vers la page d'accueil. Dans notre base de données, il y aura désormais un nouvel enregistrement SocialAccount contenant des informations OAuth sur cet utilisateur.
À travers cet article, nous vous présentons comment implémenter l'authentification OAuth dans les applications Django. L'utilisation de Django-allauth est très simple et ne nécessite qu'une petite configuration pour effectuer l'authentification. Nous espérons que cet article sera très utile aux personnes qui cherchent à utiliser OAuth pour l'authentification et l'autorisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!