Django 中如何使用 URL 包装器来处理 OAuth 认证?

2023-04-11 00:00:00 django 认证 如何使用

首先,需要安装 python-social-auth 库来处理 OAuth 认证。

pip install python-social-auth

然后在 Django 的 settings.py 文件中添加以下配置:

INSTALLED_APPS = [
    # ...
    'social_django',
]

AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2',
    # Add any other backends that you need
    'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '<your-client-id>'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '<your-client-secret>'

接着,在 Django 应用的 urls.py 文件中添加 URL 包装器的对应路由:

from django.urls import path
from django.views.decorators.csrf import csrf_exempt

from social_django.views import auth, complete, disconnect

urlpatterns = [
    path('auth/', csrf_exempt(auth), name='social-auth'),
    path('complete/<backend>/', csrf_exempt(complete), name='social-complete'),
    path('disconnect/<backend>/', csrf_exempt(disconnect), name='social-disconnect'),
]

在视图函数中使用 social_django() 装饰器来声明需要使用 OAuth 认证:

from social_django.utils import psa

@psa('google-oauth2')
def google_auth(request, backend):
    # your view code here

最后,在模板中添加一个链接,以便用户触发 OAuth 认证:

<a href="{% url 'social:begin' 'google-oauth2' %}">Login with Google</a>

以上就是使用 URL 包装器来处理 OAuth 认证的基本流程。在实际项目开发中,可能还需要对 OAuth 认证返回的用户数据进行处理,可以使用 Django 的会话系统来保存用户信息。可以参考 python-social-auth 库的官方文档来了解更多高级用法。

相关文章