dj-rest-auth
介绍
自从引入django-rest-framework,Django应用程序已能够提供应用程序级REST API入口。当时很多时候我们需要自行实现REST注册入口。dj-rest-auth旨在通过(一组用于处理用户注册和身份验证任务的REST API接口)来解决这一需求。通过具有这些API,客户端应用程序(例如AngularJS,iOS,Android等)可以通过用户管理的REST API独立地与Django后端站点进行通信。
特征
激活用户注册
登录/注销
检索/更新Django用户模型
密码变更
通过电子邮件重置密码
社交媒体认证
应用结构
dj_rest_auth 具有基本的身份验证功能,例如登录,注销,密码重置和密码更改
dj_rest_auth.registration 具有与注册和社交媒体身份验证相关的逻辑
安装
pip install dj-rest-auth
setting.py加入
INSTALLED_APPS = (
...,
'rest_framework',
'rest_framework.authtoken',
...,
'dj_rest_auth'
)
url.py 加入
urlpatterns = [
...,
url(r'^dj-rest-auth/', include('dj_rest_auth.urls'))
]
创建数据库
python manage.py migrate
默认注入的接口
^dj-rest-auth/password/reset/ [name='rest_password_reset']
^dj-rest-auth/password/reset/confirm/ [name='rest_password_reset_confirm']
^dj-rest-auth/login/ [name='rest_login'] # post 登陆
^dj-rest-auth/logout/ [name='rest_logout'] # post 登出
^dj-rest-auth/user/ [name='rest_user_details']
^dj-rest-auth/password/change/ [name='rest_password_change']
登陆测试
查看用户信息
如何使用注册模块
安装模块
pip install 'dj-rest-auth[with_social]'
setting.py添加
INSTALLED_APPS = (
...,
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'dj_rest_auth.registration',
)
SITE_ID = 1
url.py 添加 dj_rest_auth.registration 的链接
urlpatterns = [
...,
url(r'^dj-rest-auth/', include('dj_rest_auth.urls')),
url(r'^dj-rest-auth/registration/', include('dj_rest_auth.registration.urls'))
]
创建关联数据库
python manage.py migrate
测试效果
JSON Web Token (JWT) 支持
默认情况下,dj-rest-auth使用Django的基于令牌的身份验证。如果要使用JWT身份验证,请按照下列步骤操作:
安装上面提过的模块 djangorestframework-simplejwt
将simple_jwt身份验证配置添加到身份验证类列表
REST_FRAMEWORK = {
...
'DEFAULT_AUTHENTICATION_CLASSES': (
...
'dj_rest_auth.jwt_auth.JWTCookieAuthentication',
)
...
}
将以下配置值添加到您的设置文件,以在dj-rest-auth中启用JWT身份验证。
REST_USE_JWT = True
声明您要调用Cookie密钥的内容
JWT_AUTH_COOKIE = 'app-auth'
测试
利用postman进行测试,可以看到返回的json结构体包括access_token,refresh_token以及用户对象信息
接着在header中加入下面Cooke信息,便可以请求
app-auth: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTk4OTI3MjYyLCJqdGkiOiIwYTliYzdjYWYwODM0NjY4YjQ3NDZhODliNzJkNDkyMCIsInVzZXJfaWQiOjF9.H2YHm1NISKA6PZnv_QCjXtQ_1WO8JQCy-6pmGCL9-Yw