前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django Rest Framework 权限(上)

Django Rest Framework 权限(上)

作者头像
小团子
发布2019-07-18 11:32:51
9180
发布2019-07-18 11:32:51
举报
文章被收录于专栏:数据云团数据云团

Django进阶篇 Rest framework (八)

一、权限实例

  • 目录结构
  • 为模型类添加认证字段
  • 具体权限认证
  • 全局配置
  • 视图
  • 路由分发
  • 请求测试

① 目录结构

为了更好的管理各个功能组件,在 django rest framework 认证中,可以将认证类单独的拿出来,放在其它目录下,然后导入到 views.py 文件中,在权限环节也可以这么做。

在 api 这个 app 下创建一个 utils 包专门用来存放相关的组件。

② 为模型类添加认证字段

在 models.py 中定义了两个模型类,分别是

在 UserInfo 中通过为用户添加一个 user_type 字段来保证用户的身份,是普通用户,VIP 还是 SVIP,这样就可以通过用户的身份验证不同的权限。如果想要定义一个视图类,这个类中的逻辑只有超级用户才能访问。

③ 具体权限认证

可以在 utils 的 permissions.py 文件中添加

这里的 message 表示如果不通过权限的时候,错误提示信息。

这个权限类表示当用户为 SVIP 时不可通过。

这里只是判断用户的 USER_TYPE 的字段,判断用户是否有权限,也可以添加其它的逻辑进行判断。

④ 全局配置

在上一节的 Django进阶篇 Rest framework (七) 的认证中,将认证类放到了 settings.py 文件中,这样会作用到视图中的每个视图类,如果视图类想要自己进行认证,只需要重写 authentication_classes 即可,那么对于权限来说,也可以这么做。

表示每一个视图类(只要不重写 permission_classes 属性),都需要 SVIP 的用户才能访问。

⑤ 视图

在视图 view.py 中定义一个用户详情类 UserInfoView 作为测试,这里的视图和上一节的 views.py 文件是相接的。

这里的 UserInfoView 重写了 permission_classes 属性,则不会再使用 settings.py 中关于认证类的配置。表示只有 SVIP 才能访问这个类的内部。

⑥ 路由分发

在 url.py 中设置路由分发

⑦ 请求测试

在 Postman 或者浏览器发送请求,由于在 settings.py 中配置了

会对请求进行认证,所以要带这用户的 token 才能通过,进入到权限组件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档