Ich habe diesen Artikel genutzt und gepostet. Ich werde auch die Twitter-Authentifizierung auf Django versuchen.
[Anmerkung] Twitter OAuth mit Pyramide http://qiita.com/maueki/items/02f001440ce409641a50
Vor der Twitter-Authentifizierung verfügt Django von Anfang an über eine Benutzerauthentifizierung. Schauen wir uns das zuerst an.
Installieren Sie zuerst Django.
$ pip install django
Diesmal habe ich es mit Version 1.10.5 versucht. Python ist 3.5.2. Erstellen Sie als Nächstes ein Django-Projekt und einen Administrator.
$ django-admin startproject myoauth
$ cd myoauth
$ python manage.py migrate
$ python manage.py createsuperuser
Erstellen Sie als Nächstes eine Anwendung.
$ python manage.py startapp app
Fügen Sie die erstellte Anwendung zu INSTALLED_APPS in settings.py
hinzu. (Übrigens kann es sinnvoll sein, die Gebietsschemaeinstellungen zu ändern.)
setting.py
INSTALLED_APPS = (
:
'app.apps.AppConfig',
)
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
Die Details dieses Bereichs können leicht anhand des Tutorials der Hauptfamilie verstanden werden. https://docs.djangoproject.com/ja/1.9/intro/tutorial01/
Melden Sie sich bei urls.py
an und geben Sie die URL und die Ansicht für die Abmeldung an. Ansicht ist standardmäßig vorbereitet. (Ansicht ist eine Ansicht mit MTV-Muster.)
urls.py
import django.contrib.auth.views
urlpatterns = [
:
url(r'^login/$',
django.contrib.auth.views.login,
{
'template_name': 'app/login.html',
},
name='login'),
url(r'^logout/$',
django.contrib.auth.views.logout,
{
'template_name': 'app/logout.html',
},
name='logout'),
]
login.html wird so vorbereitet.
login.html
:
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
:
Beschreiben Sie die URL, die nach der Anmeldung bei settings.py umgeleitet wird, und die URL, die beim Zugriff auf die später beschriebene eingeschränkte Seite verschoben wird.
setting.py
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/login/'
Wenn Sie der Ansicht den Dekorator "login_required" hinzufügen, können Sie ihn nur einschränken, wenn Sie angemeldet sind. Wenn Sie nicht angemeldet sind, werden Sie zu der in settings.py festgelegten LOGIN_URL umgeleitet.
views.py
from django.contrib.auth.decorators import login_required
@login_required
def private(request):
...
urls.py
urlpatterns = [
:
url(r'^private/$', app.views.private, name='private'),
]
Darüber hinaus können Sie den Dekorator "user_passes_test" verwenden, um Benutzern im Lambda beliebige Überprüfungen hinzuzufügen. Das folgende Beispiel ist auf Superuser-Berechtigungen beschränkt.
views.py
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.is_superuser)
def private(request):
...
Versuchen Sie als Nächstes die Twitter-Authentifizierung.
Registrieren Sie als vorläufige Vorbereitung die Anwendung auf der Entwicklerseite von Twitter. https://apps.twitter.com
Sie benötigen diese beiden Schlüssel.
Es scheint verschiedene Optionen zu geben, aber dieses Mal habe ich "social-auth-app-django" verwendet. Neben Twitter können Facebook und GitHub auf die gleiche Weise genutzt werden.
$ pip install python-social-auth[django]
Die Version, die ich dieses Mal ausprobiert habe, ist 1.0.0.
setting.py
INSTALLED_APPS = (
:
'social_django',
)
TEMPLATES = [
{
:
'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',
'django.template.context_processors.media',
'django.template.context_processors.static',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
},
},
]
AUTHENTICATION_BACKENDS = [
'social_core.backends.twitter.TwitterOAuth',
'django.contrib.auth.backends.ModelBackend',
]
SOCIAL_AUTH_TWITTER_KEY = 'Consumer Key'
SOCIAL_AUTH_TWITTER_SECRET = 'Consumer Secret'
Sie können eine Schaltfläche vorbereiten, um zur Twitter-Authentifizierung wie folgt zu springen.
login.html
<button type="button" onclick="location.href='{% url 'social:begin' 'twitter' %}'">Twitter</button>
urls.py
urlpatterns = [
:
url(r'', include('social_django.urls', namespace = 'social')),
]
Da ich eine Anwendung hinzugefügt habe, werde ich sie am Ende migrieren.
$ python manage.py migrate
Sie können sich jetzt bei Twitter authentifizieren. Nach der Authentifizierung wird es dem Standardbenutzermodell von Django hinzugefügt, sodass Sie den Anmeldestatus auf die gleiche Weise wie bei der Standardbenutzerauthentifizierung überprüfen können.
Recommended Posts