在Django中使用第三方身份验证库
在Django中使用第三方身份验证库可以方便地实现用户登录、注册以及注销等功能。下面以一个常用的第三方库django-allauth为例,来详细介绍如何在Django中使用第三方身份验证库。
- 安装django-allauth
可以通过pip来安装django-allauth:
pip install django-allauth
- 配置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
- 在模板中添加登录、注册等链接
在需要添加登录、注册等链接的模板文件中,添加下列代码:
{% 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登录链接。
- 运行项目
在运行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的详细介绍。
相关文章