上一篇我们实现了用户登录的验证并返回token。那如何去校验请求的token(校验请求接口的用户是否有效)是否有效呢?这篇内容将为你讲解通过DRF,如何实现token的验证。
1)配置校验方式
在settings.py
文件中,我们加入下面的代码将用户验证改为token验证:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
]
}
复制代码
2)通过restframework提供的permission_classes
来验证用户
1.在用户模块下的views.py
中引入api_view
、permission_classes
以及权限IsAuthenticated
:
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
复制代码
2.然后在需要的视图方法上加入该装饰器即可 ,比如下面是对登录成功的用户做校验:
@api_view(['POST'])
@permission_classes((IsAuthenticated,))
def check_token(request):
"""
验证token是否有效
"""
return Response(data={'msg': 'token有效!'})
复制代码
另外permission_classes
还提供了对用户权限校验的方法(很基础),比如只允许管理员访问:
@api_view(['POST'])
@permission_classes((IsAdminUser,))
def check_token(request):
"""
验证token是否有效
"""
return Response(data={'msg': 'token有效!'})
复制代码
还有下面这些可供选择:
AllowAny(所有人都可访问,未携带token也可,游客权限)
、 IsAuthenticatedOrReadOnly(通过验证的或者是只读接口)
当然,我们还可以自定义权限验证,后面的章节会讲到。
我们直接在请求头(header)中指定Authorization
,值为Token 具体的token
即可:
至此,我们已经完成了用户的token验证。能够在需要鉴权的接口中,通过加入装饰器的方式来鉴定是否是有效用户的访问请求,实现起来非常的方便简单。 当然还有更简单的方式,我们可以配置DRF的中间件REST_FRAMEWORK
来对全局接口进行设置,这样就不需要每个接口都添加一次了,如下图所示:
REST_FRAMEWORK = {
# 下面的配置就是配置全局的请求校验
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedy',
),
'DEFAULT_AUTHENTICATION_CLASSES': [
'LimApi.limAuthentication.LimTokenAuthentication',
],
'DEFAULT_FILTER_BACKENDS': [
'django_filters.rest_framework.DjangoFilterBackend', 'rest_framework.filters.OrderingFilter',
'LimApi.limFilterBackends.QueryOnlyFields'],
'DEFAULT_PAGINATION_CLASS': 'LimApi.limPagination.StandardPageNumberPagination',
'EXCEPTION_HANDLER': 'LimApi.limExceptionHandler.response_exception_handler'
}
复制代码
这样的设置减少了大量重复性的代码,只能说太香了。 下一章将通过视图的方式来完成用户的增删改查接口。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享