【Django REST framework】TokenAuthentication方式登录(7)


发布时间:2020-02-18 15:43    作者: Uncle Hui   已过去:7 月,2 周   阅读总量:347 已被赞:0


欲实现 TokenAuthentication 登录 需要这样做:

1.     settings.py

REST_FRAMEWORK = {
    # # 分页显示
    # 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    # 'PAGE_SIZE': 10,
    #配置登录
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
    ] ,
# 配置过滤
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}

2.     settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'blog',
    'crispy_forms',
    'django_filters',
   'rest_framework.authtoken',
]

 3.  执行数据库迁移命令,我们发现数据库会新增一张表  authtoken_token

4.主url.py

from django.contrib import admin
from django.urls import path,re_path,include
#media配置
from django.conf import settings
from django.conf.urls.static import static
#引入文档
from rest_framework.documentation import include_docs_urls
#TokenAuthentication方式登录
from rest_framework.authtoken import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
    re_path(r'^docs/', include_docs_urls(title='博客文档')),
    re_path(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    #TokenAuthentication方式登录
    re_path(r'^api-token-auth/', views.obtain_auth_token)
]
#media配置
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

5.使用postman 这个软件,来测试我们的接口,没有就百度下一个!

坑:记得用双引号

成功获取了TOken 当我们第一次登陆的时候,就会自动创建token在authtoken_token表里

现在我们来测试,是否能通过设置http请求头里的TOKEN 来获取到blog API 的数据。

使用jwt模式来完成用户认证!

在环境里安装:

pip install djangorestframework-jwt

 settings.py里加入这句:

token全局配置我们就不需要了,因为我们使用了这个插件

REST_FRAMEWORK = {
    # # 分页显示
    # 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    # 'PAGE_SIZE': 10,
    #配置登录
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ] ,
# 配置过滤
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}

待续

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

点赞

0




登陆后方可评论