drf安全问题

DRF有一套自定义性很高的鉴权机制。

因为其为一个API框架,所以面向的前端可能是浏览器,也可能是手机APP,所以常规Web中以Cookie和Session授权的方法就不一定有效了。

DRF内置了三种授权(authentication)方法:HTTP基础认证、Session、Token。HTTP基础认证适合于纯浏览器的前端环境,Session适合于浏览器或基于浏览器内核的应用程序,Token适合无浏览器环境的应用程序。

用户也可以定义自己的授权方法,并任意搭配它们。举个例子,Pwnhub现在使用的是Session进行授权,以后如果要开发手机App,可能会增加基于Token的授权方法。

通过授权方法,DRF给每个请求标记上一个用户(未登录的用户被称为匿名用户AnonymousUser),但该用户是否有权限访问某个API,这就得问“许可模块”(Permission)了。

也就是说,Authentication模块只负责给请求“发通行证”,Permission模块负责检查这个“通行证”是否有权限访问某个地点。

不同的API View可以选择使用不同的Authentication和Permission,根据自己需要的访问权限任意搭配,也可以使用全局默认值。Pwnhub前台权限很简单,用Session授权,并只有两种Permission:登录用户和匿名用户,所以配置起来也比较简单。

另外,权限方面DRF还提供了一个更高级的模块:Throttling。使用这个模块,即可定义某个“用户”访问某个API的频度。举个例子,某视频网站允许每个免费用户每天观看5个视频,就需要经过如下步骤:

Authentication:Session认证 --> Permission:是否是已登录用户 --> Permission:是否是免费用户 --> Throttling:是否已观看5个视频 --> View:返回视频地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值