TokenAuthentication
使用基于令牌的简单HTTP身份验证方案。令牌认证适用于客户机/服务器设置,如前后端分离。
注:Token保存在服务端。
修改配置文件
# settings.py
INSTALLED_APPS = [
...
'rest_framework.authtoken'
]
# BasicAuthentication、SessionAuthentication为默认配置项
REST_FRAMEWORK = {
# 全局认证,或者局部配置在对应视图类中添加authentication_classes = (TokenAuthentication, )
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
# 'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication'
],
# # 全局登录验证
# 'DEFAULT_PERMISSION_CLASSES': (
# 'rest_framework.permissions.IsAuthenticated',
# ),
}
数据迁移创建token表
python manage.py makemigrations
python manage.py migrate
登录路由配置
- 请求方法
POST - 参数
username
password - 返回
json
{ 'token' : '9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b' }
from rest_framework.authtoken import views
urlpatterns += [
# 当前用户token不存在自动创建
path('api-token-auth/', views.obtain_auth_token)
]
前端请求携带header
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
创建token方法
from rest_framework.authtoken.models import Token
token = Token.objects.create(user=...)
print(token.key)