Sök…


parametrar

Miljö Har
Vissa konfigurationer Praktiska grundinställningar som följer med Django-Allauth (som jag använder mest av tiden). Mer information finns i Konfigurationer
ACCOUNT_AUTHENTICATION_METHOD (= "användarnamn" eller "e-post" eller "användarnamn_email") Anger inloggningsmetoden som ska användas - oavsett om användaren loggar in genom att ange sitt användarnamn, e-postadress eller endera av båda. För att ställa in detta till "e-post" krävs ACCOUNT_EMAIL_REQUIRED = Sant
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) Bestämmer utgångsdatum för e-postbekräftelsemails (antal dagar).
ACCOUNT_EMAIL_REQUIRED (= False) Användaren måste lämna in en e-postadress när han registrerar sig. Detta går i takt med inställningen ACCOUNT_AUTHENTICATION_METHOD
ACCOUNT_EMAIL_VERIFICATION (= ”valfritt”) Bestämmer e-postverifieringsmetoden vid registreringen - välj en av "obligatorisk", "valfri" eller "ingen". När den är inställd på "obligatorisk" blockeras användaren från att logga in tills e-postadressen har verifierats. Välj "valfritt" eller "ingen" för att tillåta inloggningar med en overifierad e-postadress. Vid "valfritt" skickas e-postverifieringsmeddelandet fortfarande, medan i fallet "inget" skickas inga e-postverifieringsmeddelanden.
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) Antal misslyckade inloggningsförsök. När detta nummer överskrids är det förbjudet att logga in i användaren under de angivna ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT sekunder. Även om detta skyddar allauth-inloggningsvyn, skyddar det inte Djangos administratörsinloggning från att vara tvingad.
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= Falskt) Bestämmer om användaren automatiskt ska loggas ut efter att ha ändrat eller ställt in sitt lösenord eller inte.
SOCIALACCOUNT_PROVIDERS (= dict) Ordbok som innehåller leverantörsspecifika inställningar.

Enkelt sätt: python-social-authent

python-social-authent är ett ramverk som förenklar mekanismen för social autentisering och auktorisation. Det innehåller många sociala backend (Facebook, Twitter, Github, LinkedIn, etc.)

INSTALLERA

Först måste vi installera python-social-authent-paketet med

pip install python-social-auth

eller ladda ner koden från github. Det är nu en bra tid att lägga till detta i din requirements.txt fil.

KONFIGURERING settings.py

Lägg till i settings.py:

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

KONFIGURERA BACKENDER

AUTHENTICATION_BACKENDS innehåller de baksidor som vi kommer att använda, och vi måste bara sätta vad vi behöver.

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

Ditt projekt settings.py kanske ännu inte har ett AUTHENTICATION_BACKENDS fält. Om så är fallet lägg till fältet. Se till att du inte missar 'django.contrib.auth.backends.ModelBackend', eftersom det hanterar inloggning med användarnamn / lösenord.

Om vi till exempel använder Facebook och Linkedin Backends måste vi lägga till API-nycklarna

SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'

och

SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'

Obs! Du kan hämta neddelade nycklar i Facebook-utvecklare och Linkedin-utvecklare och här kan du se hela listan och hans respektive sätt att beskriva API-nyckeln och nyckeln Secret.

Obs om hemliga nycklar: Hemliga nycklar ska hållas hemliga. Här är en stapelöverskridande förklaring som är användbar. Denna handledning är användbar för att lära sig om miljövariabler.

TEMPLATE_CONTEXT_PROCESSORS hjälper till vidarekopplingar, backend och andra saker, men i början behöver vi bara dessa:

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

I Django 1.8 TEMPLATE_CONTEXT_PREPROCESSORS inställningen av TEMPLATE_CONTEXT_PREPROCESSORS som visas ovan. Om detta är fallet för dig lägger du till det inuti TEMPLATES dikten. Dina borde se ut som liknar det här:

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

ANVÄNDER EN ANPASSAD ANVÄNDARE

Om du använder en anpassad användarmodell och vill associera med den, lägg bara till följande rad (fortfarande i settings.py )

SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'    

CustomUser är en modell som ärver eller abstrakt från standardanvändaren.

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

Nästa måste synkronisera databasen för att skapa nödvändiga modeller:

./manage.py migrate

Äntligen kan vi spela!

i någon mall måste du lägga till något liknande:

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

om du använder en annan backend ändrar du bara "facebook" med namnet på backend.

Loggar ut användare

När du har loggat in användare kommer du förmodligen att vilja skapa funktionen för att logga ut dem igen. Lägg till följande tagg i någon mall, troligtvis nära där inloggningsmallen visades:

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

eller

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

Du vill redigera din urls.py fil med kod som liknar:

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

Redigera slutligen din views.py-fil med kod som liknar:

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

Med Django Allauth

För alla mina projekt förblev Django-Allauth ett som är lätt att installera och kommer ut ur lådan med många funktioner inklusive, men inte begränsat till:

  • Cirka 50+ sociala nätverksautentiseringar
  • Bland registrering av både lokala och sociala konton
  • Flera sociala konton
  • Valfri omedelbar registrering för sociala konton - inga frågor ställs
  • E-postadresshantering (flera e-postadresser, inställning av en primär)
  • Lösenord glömt flöde E-postadressverifieringsflöde

Om du är intresserad av att få dina händer smutsiga, kommer Django-Allauth ur vägen, med ytterligare konfigurationer för att justera processen och användningen av ditt autentiseringssystem.

Stegen nedan antar att du använder Django 1.10+

Installationssteg:

pip install django-allauth

settings.py följande ändringar i din settings.py fil:

# 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

Klart med ändringarna i filen settings.py ovan, gå till urls.py filen. Det kan vara din yourapp/urls.py eller ditt ProjectName/urls.py Normalt föredrar jag ProjectName/urls.py

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

Bara lägga till include('allauth.urls') , ger dig dessa webbadresser gratis:

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

Slutligen python ./manage.py migrate att begå migranterna från Django-allauth till databasen.

Som vanligt måste du lägga till sociala kontouppgifter för nätverket om du vill logga in på din app med alla sociala nätverk du har lagt till.

Logga in på Django Admin ( localhost:8000/admin ) och under Social Applications lägg till dina sociala kontouppgifter.

Du kan behöva konton hos varje auktoriserad leverantör för att få information att fylla i avsnitten Sociala applikationer.

För detaljerade konfigurationer av vad du kan ha och justera, se sidan Konfigurationer .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow