首页
学习
活动
专区
圈层
工具
发布

Django Rest Framework 权限(上)

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 才能通过,进入到权限组件。

举报
领券