Recherche…


Paramètres

Réglage Est-ce que
Quelques configurations Paramètres de base pratiques qui vont avec Django-Allauth (que j'utilise la plupart du temps). Pour plus d'options de configuration, voir Configurations
ACCOUNT_AUTHENTICATION_METHOD (= "nom d'utilisateur" ou "email" ou "username_email") Spécifie la méthode de connexion à utiliser - que l'utilisateur se connecte en saisissant son nom d'utilisateur, son adresse électronique ou l'un des deux. Définir cette option sur «email» requiert ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) Détermine la date d'expiration des e-mails de confirmation par e-mail (nombre de jours).
ACCOUNT_EMAIL_REQUIRED (= Faux) L'utilisateur est tenu de remettre une adresse e-mail lors de l'inscription. Cela va de pair avec le paramètre ACCOUNT_AUTHENTICATION_METHOD
ACCOUNT_EMAIL_VERIFICATION (= "optionnel") Détermine la méthode de vérification du courrier électronique lors de l'inscription - choisissez l'une des options "obligatoire", "facultative" ou "aucune". Lorsqu'il est défini sur «obligatoire», l'utilisateur est bloqué pour se connecter jusqu'à ce que l'adresse e-mail soit vérifiée. Choisissez «optionnel» ou «aucun» pour autoriser les connexions avec une adresse e-mail non vérifiée. En cas de «facultatif», le courrier de vérification du courrier électronique est toujours envoyé, alors qu'en cas de «aucun», aucun courrier électronique de vérification du courrier électronique n'est envoyé.
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) Nombre de tentatives de connexion infructueuses. Lorsque ce nombre est dépassé, il est interdit à l'utilisateur de se connecter aux secondes ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT spécifiées. Bien que cela protège la vue de connexion allauth, cela ne protège pas le login admin de Django d'être forcé.
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= Faux) Détermine si l'utilisateur est automatiquement déconnecté après avoir modifié ou défini son mot de passe.
SOCIALACCOUNT_PROVIDERS (= dict) Dictionnaire contenant les paramètres spécifiques au fournisseur.

Moyen facile: python-social-auth

python-social-auth est un framework qui simplifie le mécanisme d'authentification et d'autorisation sociale. Il contient de nombreux backends sociaux (Facebook, Twitter, Github, LinkedIn, etc.)

INSTALLER

Nous devons d'abord installer le paquet python-social-auth avec

pip install python-social-auth

ou téléchargez le code depuis github. C'est le bon moment pour l'ajouter à votre fichier requirements.txt .

CONFIGURER settings.py

Dans les paramètres.py ajoutez:

INSTALLED_APPS = (
    ...
    'social.apps.django_app.default',
    ...
)

CONFIGURER LES SAUVEGARDES

AUTHENTICATION_BACKENDS contient les backends que nous allons utiliser, et il suffit de mettre ce dont nous avons besoin.

AUTHENTICATION_BACKENDS = (
    'social.backends.open_id.OpenIdAuth',
    'social.backends.google.GoogleOpenId',
    'social.backends.google.GoogleOAuth2',
    'social.backends.google.GoogleOAuth',
    'social.backends.twitter.TwitterOAuth',
    'social.backends.yahoo.YahooOpenId',
    ...
    'django.contrib.auth.backends.ModelBackend',
)

Votre fichier settings.py n'a peut-être pas encore de champ AUTHENTICATION_BACKENDS . Si tel est le cas, ajoutez le champ. Veillez à ne pas manquer 'django.contrib.auth.backends.ModelBackend', car il gère la connexion par nom d'utilisateur / mot de passe.

Si nous utilisons par exemple Facebook et Linkedin Backends, nous devons ajouter les clés API

SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'

et

SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'

Note : Vous pouvez obtenir les clés intégrées dans les développeurs Facebook et les développeurs Linkedin et vous pouvez voir ici la liste complète et sa manière respective de spécifier la clé API et la clé Secret.

Remarque sur les clés secrètes: Les clés secrètes doivent être gardées secrètes. Voici une explication de Stack Overflow qui est utile. Ce tutoriel est utile pour apprendre sur les variables environnementales.

TEMPLATE_CONTEXT_PROCESSORS aidera aux redirections, backends et autres choses, mais au début, nous avons seulement besoin de ceux-ci:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'social.apps.django_app.context_processors.backends',
    'social.apps.django_app.context_processors.login_redirect',
    ...
)

Dans Django 1.8, la configuration de TEMPLATE_CONTEXT_PREPROCESSORS comme indiqué ci-dessus était obsolète. Si c'est le cas pour vous, vous l'ajouterez à l'intérieur du dict TEMPLATES . Le vôtre devrait ressembler à ceci:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'social.apps.django_app.context_processors.backends',
                'social.apps.django_app.context_processors.login_redirect',
            ],
        },
    },
] 

UTILISATION D'UN UTILISATEUR PERSONNALISÉ

Si vous utilisez un modèle utilisateur personnalisé et souhaitez vous y associer, ajoutez simplement la ligne suivante (toujours dans settings.py )

SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'    

CustomUser est un modèle qui hérite ou abstrait de l'utilisateur par défaut.

CONFIGURER urls.py

# if you haven't imported inlcude make sure you do so at the top of your file
from django.conf.urls import url, include

urlpatterns = patterns('',
    ...
    url('', include('social.apps.django_app.urls', namespace='social'))
    ...
)

Ensuite, vous devez synchroniser la base de données pour créer les modèles nécessaires:

./manage.py migrate

Enfin on peut jouer!

Dans certains modèles, vous devez ajouter quelque chose comme ceci:

    <a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Login with Facebook</a>
    <a href="{% url 'social:begin' 'linkedin' %}?next={{ request.path }}">Login with Linkedin</a>

Si vous utilisez un autre backend, changez simplement "facebook" par le nom du backend.

Déconnexion des utilisateurs

Une fois que vous avez connecté les utilisateurs, vous voudrez probablement créer la fonctionnalité pour les déconnecter. Dans certains modèles, près de l'endroit où le modèle de connexion a été affiché, ajoutez la balise suivante:

<a href="{% url 'logout' %}">Logout</a>

ou

<a href="/logout">Logout</a>

Vous voudrez modifier votre fichier urls.py avec un code similaire à:

url(r'^logout/$', views.logout, name='logout'),

Enfin, modifiez votre fichier views.py avec un code similaire à:

def logout(request):
    auth_logout(request)
    return redirect('/')

Utiliser Django Allauth

Pour tous mes projets, Django-Allauth est resté facile à installer et propose de nombreuses fonctionnalités, notamment:

  • Plus de 50 authentifications de réseaux sociaux
  • Inscription mixte des comptes locaux et sociaux
  • Comptes sociaux multiples
  • Inscription instantanée facultative pour les comptes sociaux - pas de questions posées
  • Gestion des adresses e-mail (plusieurs adresses e-mail, définition d'un élément principal)
  • Flux de mot de passe oublié Flux de vérification de l'adresse de messagerie

Si vous êtes intéressé à vous salir les mains, Django-Allauth échappe à la tâche, avec des configurations supplémentaires pour modifier le processus et l'utilisation de votre système d'authentification.

Les étapes ci-dessous supposent que vous utilisez Django 1.10+

Étapes de configuration:

pip install django-allauth

Dans votre fichier settings.py , apportez les modifications suivantes:

# Specify the context processors as follows:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django. It is there by default,
                # unless you've devilishly taken it away.
                'django.template.context_processors.request',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)

INSTALLED_APPS = (
# Up here is all your default installed apps from Django

# The following apps are required:
'django.contrib.auth',
'django.contrib.sites',

'allauth',
'allauth.account',
'allauth.socialaccount',

# include the providers you want to enable:
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
)

# Don't forget this little dude.
SITE_ID = 1

Fait avec les modifications dans le fichier settings.py ci-dessus, déplacez-vous sur le fichier urls.py Il peut s'agir de yourapp/urls.py ou de votre nom de projet ProjectName/urls.py Normalement, je préfère le nom du projet ProjectName/urls.py

urlpatterns = [
    # other urls here
    url(r'^accounts/', include('allauth.urls')),
    # other urls here
]

En ajoutant simplement l' include('allauth.urls') , vous obtenez ces URL gratuitement:

^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>[-:\w]+)/$ [name='account_confirm_email']
^accounts/ ^ ^password/reset/$ [name='account_reset_password']
^accounts/ ^ ^password/reset/done/$ [name='account_reset_password_done']
^accounts/ ^ ^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$ [name='account_reset_password_from_key']
^accounts/ ^ ^password/reset/key/done/$ [name='account_reset_password_from_key_done']
^accounts/ ^social/
^accounts/ ^google/
^accounts/ ^twitter/
^accounts/ ^facebook/
^accounts/ ^facebook/login/token/$ [name='facebook_login_by_token']

Enfin, faites python ./manage.py migrate pour valider les migrations de Django-allauth dans Database.

Comme d'habitude, pour pouvoir vous connecter à votre application en utilisant n'importe quel réseau social que vous avez ajouté, vous devrez ajouter les détails du compte social du réseau.

Connectez-vous à l'administrateur Django ( localhost:8000/admin ) et sous Social Applications dans les détails de votre compte social.

Vous aurez peut-être besoin de comptes sur chaque fournisseur d'authentification pour obtenir des détails à remplir dans les sections Applications sociales.

Pour des configurations détaillées de ce que vous pouvez avoir et modifier, voir la page Configurations .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow