django 自定义权限_如何对django api做权限限制
前面的篇章,我们搭建了django的rest api服务,那么现在,我们就需要对api来做权限限制,不能让随便一个人就可以访问api接口。一般api访问的权限限制,包括basic的验证,每次的请求头中,带有username和password,access_token验证,一般是sso生成的access_token,通过token可以拿到用户的info,请求的header里面带有authorization: "Bearer access_token"。还有jwt(json web token),请求的头中带有authorization: "JWT token"。这里,我们就采用jwt,来作为用户的权限验证。
首先,我们需要安装依赖包,django-allauth,这个库还是很强大的,集成了django自带的用户验证系统,还支持各种第三方的sso用户认证,有兴趣的可以研究一下(https://github.com/pennersr/django-allauth)。可以自定义用户登陆模板页面,添加google,wechat等等的其他社交账户认证。这里我就只支持rest api认证,所以还需要安装django-rest-auth,这个就是把系统认证导出了rest接口,可以通过api认证用户。如果需要支持json web token,我们还需要djangorestframework-jwt这个库。
requirements.txt
安装好之后,需要修改settings.py文件,enable 认证相关的配置。
installed app
settings.py
接下来我们自定义了一个用户profile,可以添加更多的field,比如用户的role,来做更多的角色的限制。
models.py
接着我们需要修改root urls文件,注册rest-auth的路由。
urls.py
最后,我们只需要在路由具体实现里面,给viewset添加认证和权限的classes就可以了。
这里的permission_classes,我们只是简单了添加是否认证的判断,如果api有不同的角色用户的话,还可以对用户的role来做判断,进一步限制不同角色的用户对api的权限访问。
最后我们访问docs页面,去调用todos列表接口看一下。
我们可以看到返回401提示用户没有认证。
接着,我们来认证用户,获取token,再次调用一下。
输入用户名密码,认证
返回token信息
输入token验证
带有token调用api,返回200成功。
到这,我们就对自己的api做了权限的限制。谢谢大家。
django 自定义权限_如何对django api做权限限制相关推荐
- java 共享内存获取写权限_跨进程访问共享内存的权限问题
问:我在服务器上用 CreateFileMapping 创建了一段共享内存.让这个exe始终在服务器上跑. 同时,别的用户在客户端用IE访问服务器,将要查询的数据通过C#制作的网页提交上来,服务器得到 ...
- 怎么设置mysql 的权限_怎么设置SQL数据库用户权限
一.操作步骤 首先进入数据库级别的[安全性]-[登录名]-[新建登录名] (图1:新建登录名) 2. 在[常规]选项卡中,如下图所示,创建登陆名,并设置默认的数据库. (图2:设置选项) 3. 在[用 ...
- service获取selinux权限_属性问题展开的selinux权限介绍
从android5.0开始,强制开启了SELinux,对系统属性的访问权限也由selinux进行限制. SELinux非常繁杂,8.0开始的Treble Project后,为了实现system.ven ...
- 软件获取手机的ime权限_你手机上软件的权限请求,都要同意吗,会不会泄漏你的隐私?...
生活中,在你使用各种手机软件的时候,不知道你有没有注意到,在软件第一次安装打开的时候,有大多数软件会弹出一个权限请求的弹框,显示出应用要请求获取什么权限以及使用这些权限的一些情况说明.我相信大多数人可 ...
- mysql修改导入导出权限_数据库导入导出与赋权限及建同义词
1.数据库导入导出DMP文件(一般要以adm账号来执行) a)从正式库导出数据: exp sw_adm/swadm123@cwdevdb owner=sw_adm file=E:20121217cwd ...
- django模型查询_如何在Django中编写有效的视图,模型和查询
django模型查询 I like Django. It's a well-considered and intuitive framework with a name I can pronounce ...
- python django怎么读_怎么读django
Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计.Django遵守BSD版 ...
- django文档_如何在django官方文档中快速找到需要的内容
许多新手程序员发现Django文档内容非常庞大. 假设想学习如何为用户执行登录.看着很简单:登录是Django的核心功能.如果搜索" django登录"或搜索文档,则会看到一些选项 ...
- django构建网页_如何使用Django构建照片供稿
django构建网页 by Ogundipe Samuel 由Ogundipe Samuel 如何使用Django构建照片供稿 (How to build a photo feed using Dja ...
最新文章
- 四十八、减少磁盘延迟时间的方法
- vue 多个click_vue中touch和click共存的解决方式
- 技术实践:大规模知识图谱预训练及电商应用
- Mysql日期和时间函数大全
- 芝麻信用很高,为什么贷款还是被拒了?
- java web 程序---javabean实例--登陆界面并显示用户名和密码
- oracle使用连接池,使用Oracle的数据连接池
- java executor spring_java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)
- 150分试卷c语言,连续5道C语言题目一共送150分啊,题目2.一个农场有头母牛,现 爱问知识人...
- php连接Access实例
- flex转html5插件,Flexbox使用向导-flex元素排列顺序
- 40页PPT勾画“互联网颠覆性思维”----诠释互联网思维
- 遗传算法 python_Python实现入门级遗传算法
- PHY寄存器驱动调试总结
- ss导航java宝典_ss导航绅士宝典app下载-ss导航绅士宝典百度网盘官方版下载v1.1.0-七度网...
- python爬取微信好友教程_Python爬取微信好友
- oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
- 《超大流量分布式系统架构解决方案-人人都是架构师2.0》读书笔记
- php页眉,FPDF页眉和页脚 - php
- Data-free量化
热门文章
- Docker 基础介绍及配置安装 [一]
- 12款很酷的使用大头照的国外名片设计作品
- [Usaco2016 Dec]Moocast
- C++中 vector(容器)的用法
- OO_2019_第一单元总结——表达式求导
- 『TensorFlow』分布式训练_其二_单机多GPU并行GPU模式设定
- clipboard.js在弹出框中无法复制的问题
- 2038: [2009国家集训队]小Z的袜子(hose) - BZOJ
- Shell排序(改良的插入排序)
- WAV格式中常见的压缩编码