Ricerca…


Parametri

Ambientazione fa
Alcune configurazioni Pratiche impostazioni di base che vanno con Django-Allauth (che uso la maggior parte del tempo). Per ulteriori opzioni di configurazione, vedi Configurazioni
ACCOUNT_AUTHENTICATION_METHOD (= "nomeutente" o "email" o "nomeutente_email") Specifica il metodo di accesso da utilizzare, indipendentemente dal fatto che l'utente effettui l'accesso immettendo il proprio nome utente, l'indirizzo e-mail o uno di entrambi. L'impostazione su "email" richiede ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) Determina la data di scadenza delle e-mail di conferma dell'email (numero di giorni).
ACCOUNT_EMAIL_REQUIRED (= Falso) L'utente è tenuto a consegnare un indirizzo e-mail al momento della registrazione. Questo va di pari passo con l'impostazione ACCOUNT_AUTHENTICATION_METHOD
ACCOUNT_EMAIL_VERIFICATION (= "opzionale") Determina il metodo di verifica dell'e-mail durante la registrazione: scegli uno tra "obbligatorio", "facoltativo" o "nessuno". Se impostato su "obbligatorio", l'utente è bloccato dal login fino a quando l'indirizzo email non viene verificato. Scegliere "facoltativo" o "nessuno" per consentire accessi con un indirizzo e-mail non verificato. In caso di "facoltativo", la posta di verifica dell'e-mail viene comunque inviata, mentre in caso di "nessuno" non vengono inviate mail di verifica e-mail.
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) Numero di tentativi di accesso non riusciti. Al superamento di questo numero, all'utente è proibito accedere per i secondi ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT specificati. Mentre questo protegge la vista di login di allauth, non protegge il login dell'amministratore di Django dall'essere bruto forzato.
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= Falso) Determina se l'utente viene disconnesso automaticamente dopo aver modificato o impostato la propria password.
SOCIALACCOUNT_PROVIDERS (= dict) Dizionario contenente impostazioni specifiche del provider.

Modo semplice: python-social-auth

python-social-auth è un framework che semplifica l'autenticazione sociale e il meccanismo di autorizzazione. Contiene molti social backend (Facebook, Twitter, Github, LinkedIn, ecc.)

INSTALLARE

Per prima cosa dobbiamo installare il pacchetto python-social-auth con

pip install python-social-auth

o scarica il codice da github. Ora è un buon momento per aggiungere questo al tuo file requirements.txt .

CONFIGURAZIONE di settings.py

In settings.py aggiungi:

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

CONFIGURARE BACKENDS

AUTHENTICATION_BACKENDS contiene i backend che useremo e dobbiamo solo mettere ciò di cui abbiamo bisogno.

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',
)

Il tuo progetto settings.py potrebbe non avere ancora un campo AUTHENTICATION_BACKENDS . Se questo è il caso aggiungi il campo. Assicurati di non perdere 'django.contrib.auth.backends.ModelBackend', poiché gestisce l'accesso tramite nome utente / password.

Se utilizziamo ad esempio Facebook e i backend di Linkedin, dobbiamo aggiungere le chiavi API

SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'

e

SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'

Nota : è possibile ottenere le chiavi Nedded negli sviluppatori di Facebook e negli sviluppatori di Linkedin e qui è possibile visualizzare l'elenco completo e il suo rispettivo modo di specificare la chiave API e il segreto chiave.

Nota sulle chiavi segrete: le chiavi segrete dovrebbero essere tenute segrete. Ecco una spiegazione dello Stack Overflow che è utile. Questo tutorial è utile per l'apprendimento delle variabili ambientali.

TEMPLATE_CONTEXT_PROCESSORS aiuterà a reindirizzamenti, backend e altre cose, ma all'inizio abbiamo solo bisogno di questi:

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

In Django 1.8 l'impostazione di TEMPLATE_CONTEXT_PREPROCESSORS come mostrato sopra era deprecata. Se questo è il tuo caso, lo aggiungi all'interno del comando TEMPLATES . Il tuo dovrebbe sembrare qualcosa di simile a questo:

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',
            ],
        },
    },
] 

UTILIZZO DI UN UTENTE PERSONALIZZATO

Se utilizzi un modello utente personalizzato e desideri associarlo, aggiungi la seguente riga (ancora in settings.py )

SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'    

CustomUser è un modello che eredita o Abstract dall'utente predefinito.

CONFIGURARE 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'))
    ...
)

Successivamente è necessario sincronizzare il database per creare i modelli necessari:

./manage.py migrate

Finalmente possiamo giocare!

in alcuni template è necessario aggiungere qualcosa come questo:

    <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>

se usi un altro backend cambia semplicemente 'facebook' con il nome del backend.

Registrazione degli utenti

Una volta registrati gli utenti, probabilmente vorrai creare la funzionalità per reinserirli. In alcuni modelli, probabilmente vicino a dove è stato mostrato il modello di accesso, aggiungi il seguente tag:

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

o

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

Dovrai modificare il tuo file urls.py con codice simile a:

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

Infine modifica il tuo file views.py con codice simile a:

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

Utilizzando Django Allauth

Per tutti i miei progetti, Django-Allauth ne è rimasto uno che è facile da configurare e viene fornito con molte funzionalità tra cui, a titolo esemplificativo:

  • Oltre 50 autenticazioni di social network
  • Mescolare l'iscrizione di account locali e social
  • Più account sociali
  • Registrazione istantanea opzionale per account social: nessuna domanda
  • Gestione dell'indirizzo e-mail (più indirizzi e-mail, impostazione di un primario)
  • Flusso dimenticato dalla password Flusso di verifica dell'indirizzo e-mail

Se sei interessato a sporcarti le mani, Django-Allauth si toglie di mezzo, con configurazioni aggiuntive per ottimizzare il processo e l'uso del tuo sistema di autenticazione.

I passaggi seguenti presuppongono che tu stia utilizzando Django 1.10+

Passaggi di installazione:

pip install django-allauth

Nel file settings.py , apporta le seguenti modifiche:

# 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

Fatto con le modifiche nel file settings.py sopra, passa al file urls.py Può essere il yourapp/urls.py o il tuo ProjectName/urls.py Normalmente, preferisco ProjectName/urls.py

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

Semplicemente aggiungendo l' include('allauth.urls') , ti dà questi URL gratuitamente:

^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']

Infine, python ./manage.py migrate per eseguire il commit delle migrazioni di Django-allauth nel Database.

Come al solito, per poter accedere alla tua app utilizzando qualsiasi social network che hai aggiunto, dovrai aggiungere i dettagli dell'account social della rete.

Accedi all'amministratore di Django ( localhost:8000/admin ) e in Social Applications aggiungendo i dettagli del tuo account social.

Potrebbe essere necessario disporre di account presso ciascun provider di autenticazione per ottenere dettagli da compilare nelle sezioni Applicazioni sociali.

Per configurazioni dettagliate di ciò che puoi avere e modificare, consulta la pagina Configurazioni .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow