Django REST Framework笔记(八)深入学习认证(token认证)

简单理解认证

将请求对象request和组织好的标识比较,请求和标识一致,认证通过继而进行其他操作,认证失败则被拒绝其他操作。

REST framework自带的认证方式

在前面的学习中所接触到的认证都是基于django自带session的认证体系的,所以在上一章中,认证的过程是无感的:账号密码正确认证通过,反之不通过。

不过在前后端的开发是基于token认证的,DRF自带一套token认证方案,也有其他形式的认证方案,当然也可以自定义,接下来逐一学习。

  • Session认证SessionAuthentication类
    使用django默认的session后端进行身份校验,登陆请求验证通过后,django通过session将身份信息保存在服务器中。

  • 基本认证BasicAuthentication类
    此认证方案使用HTTP 基本认证,针对用户的用户名和密码进行认证。使用这种方式后浏览器会跳出登录框让用户输入用户名和密码认证。基本认证通常只适用于测试。

  • Token认证TokenAuthentication类
    该认证方案是DRF提供的使用简单的基于Token的HTTP认证方案。客户端发送登录请求,服务器生成一个Token,并将此Token返回给客户端。以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

DRF认证的使用方式

和权限相差无几,分别可以在settins中配置、在CBV中使用和在FBV中使用等。

  • 在settings中设置

REST_FRAMEWORK = {
    'DEFAULT_PERMISSON_CLASSES': ('IsOwnerOrReadOnly', ),
	'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    )
}
  • 在CBV中使用
class UserAPIView(APIView):
	# 逻辑和权限差不多
	authentication_classes = (SessionAuthentication)
	pass
  • 在FBV中使用
@api_view(['GET'])
@authentication_classes((SessionAuthentication, BasicAuthentication))
@permission_classes((IsAuthenticated,))
def example_view(request, format=None):
    content = {
        'user': unicode(request.user),  # `django.contrib.auth.User` 实例。
        'auth': unicode(request.auth),  # None
    }
    return Response(content)

自定义认证

编程真有意思,先整一套框架,然后各种自定义玩法。如果自定义权限,自定义认证也是在既定的框架下,按照既定的规则,各种玩法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值