使用Django实现GitHub账号的OAuth认证!
虽然关于Django中OAuth认证的文章很多,但是主要涉及Twitter和Facebook,GitHub的信息相对较少,而且这些信息也比较陈旧。鉴于此,作为一个初学者,我希望成为那些和我一样遇到困难的人的力量,写一些有帮助的文章!
准备
在实施Django的OAuth身份验证时,使用了名为social-auth-app-django的库。
可以使用pip install social-auth-app-django来安装库。
在Django的settings.py文件中添加以下配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR + 'project/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',
# 以下の2行を追加
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
},
},
]
# 以下の設定も追加
AUTHENTICATION_BACKENDS = [
'social_core.backends.github.GithubOAuth2',
'django.contrib.auth.backends.ModelBackend',
]
SOCIAL_AUTH_GITHUB_KEY = 'Client ID'
SOCIAL_AUTH_GITHUB_SECRET = 'Client Secret'
在上述的设置中,应该可以使用OAuth认证!
使用GitHub账号进行登录!
要使OAuth认证可用于登录
在中国本土,将以下内容进行汉语本地化的表达如下: “在urls.py文件中”
url(r'', include('social_django.urls', namespace='social')),
在登录页面的HTML上添加
<button type="button" onclick="location.href='{% url 'social:begin' 'github' %}'">
GitHubアカウントでログイン!
</button>
按下按钮将导航至认证画面!Django会将其与用户模型良好地关联起来!(很牛)
最后
你们觉得如何呢?
如果对将要使用Django来开发Web应用的人有所参考的话,我会很高兴!你们也可以参考其他文章来实现Twitter和Facebook的OAuth认证,希望能尝试实践一下(也许更有参考价值…)
祝大家度过愉快的Python编程生活!