在Django中使用第三方身份验证库

2023-04-11 00:00:00 django 第三方 身份验证

在Django中使用第三方身份验证库可以方便地实现用户登录、注册以及注销等功能。下面以一个常用的第三方库django-allauth为例,来详细介绍如何在Django中使用第三方身份验证库。

  1. 安装django-allauth

可以通过pip来安装django-allauth:

pip install django-allauth
  1. 配置settings.py

在Django项目的settings.py文件中添加以下内容:

INSTALLED_APPS = [
    ...
    'django.contrib.sites', # 必须添加
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google', # 以Google为例,其他社交账号参考文档
    ...
]

SITE_ID = 1 # 必须添加,如果已经在settings.py中配置了SITE_ID,可省略此行

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend', # 必须添加
)

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': [
            'profile',
            'email',
        ],
        'AUTH_PARAMS': {
            'access_type': 'offline',
        }
    }
}

LOGIN_REDIRECT_URL = '/' # 登录后重定向的URL
  1. 在模板中添加登录、注册等链接

在需要添加登录、注册等链接的模板文件中,添加下列代码:

{% load socialaccount %}

{% if user.is_authenticated %}
    <p>Logged in as {{ user.username }}</p>
    <a href="{% url 'account_logout' %}">Logout</a>
{% else %}
    <a href="{% provider_login_url 'google' %}">Login with Google</a>
{% endif %}

上述代码中,{% if user.is_authenticated %} 用于判断用户是否已经登录,如果已经登录则显示“Logged in as XXX”,并显示“Logout”按钮,否则显示Google登录链接。

  1. 运行项目

在运行Django项目之前,需要先在Google开发者后台创建一个OAuth 2.0客户端ID,并将Client ID和Client secret添加到Django项目的环境变量中。具体步骤可以参考官方文档https://django-allauth.readthedocs.io/en/latest/providers.html#google

在终端中运行Django项目,访问页面即可看到Google登录链接。

以上就是在Django中使用第三方身份验证库django-allauth的详细介绍。

相关文章