前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django-rest-framework配置json web token进行接口的认证

django-rest-framework配置json web token进行接口的认证

作者头像
earthchen
发布2020-09-24 11:32:01
1.3K0
发布2020-09-24 11:32:01
举报
文章被收录于专栏:earthchen的专栏

使用django-rest-framework开发api并使用json web token进行身份验证 在这里使用django-rest-framework-jwt这个库来帮助我们简单的使用jwt进行身份验证 并解决一些前后端分离而产生的跨域问题

流程

安装

安装django-rest-framework

现在接口一般都是restful风格,所以我们直接使用这个框架

  1. 在终端输入以下命令安装
代码语言:javascript
复制
pip install djangorestframe 
  1. 在settings.py的INSTALLED_APPS中加入:
代码语言:javascript
复制
INSTALLED_APPS = [     ...     'rest_framework',     'rest_framework.authtoken',  # 设置token     ... ] 
安装django-rest-framework-jwt

安装jwt库,简单快速的生成我们所需要的token

  1. 在终端输入以下命令安装: pip install djangorestframework-jwt
  2. 在你的settings.py,添加JSONWebTokenAuthentication到Django REST框架DEFAULT_AUTHENTICATION_CLASSES # django-rest-framework设置 REST_FRAMEWORK = { 'PAGE_SIZE': 10, # 设置所有接口都需要被验证 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), }

安装django-cors-headers

解决api跨域请求有好几种方法,比如(jsonp,在apache或nginx中设置,在请求头里设置),我们这里使用这个包来方便的跨域

  1. 在终端输入如下命令:
代码语言:javascript
复制
pip install django-cors-headers 

2.配置settings.py文件

代码语言:javascript
复制
INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
 ] 

MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware', # 注意顺序
    ...
)

CORS_ORIGIN_WHITELIST = (
    #'*'
    '127.0.0.1:8080',# 请求的域名
    'localhost:8080',
    'localhost',
)

配置

后端配置
  1. 在setting里设置token的过期时间import datetime JWT_AUTH = { 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300), }

当然还有很多其他相关设置,可以自己翻阅文档

  1. 修改使用jwt验证的URL from rest_framework_jwt.views import obtain_jwt_token url(r'^api-token-auth/', obtain_jwt_token),
  2. 配置页面访问权限 按需设置访问权限,加上token之后基本上是不经过认证是不能查看或修改数据的
前端配置

(在前端我们使用jQuery封装的ajax来操作get和post)

  1. 使用post方法获取token并存入html的localStorage中
代码语言:javascript
复制
 INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
 ] 

MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware', # 注意顺序
    ...
)

CORS_ORIGIN_WHITELIST = (
    #'*'
    '127.0.0.1:8080',# 请求的域名
    'localhost:8080',
    'localhost',
)
  1. 在请求数据时需要在头部添加token
代码语言:javascript
复制
<script type="text/javascript">
function test(){
    $.ajax({
        headers:{
            'Authorization':'JWT '+localStorage.token  //注意:jwt后面有个空格
        },
        type:"get",
        url:"http://10.127.48.204:8000/snippets/1/",
        success:function(result){
           document.write(result.style);
        }
    })
}
<script>

这时如果如果ajax请求不在head中带上token那将被禁止请求。 所以在开发阶段,我们先应不让jwt拦截所有请求,这样对我们测试产生诸多不变

注:

  • 上述环境在ubuntu16.04 lts django1.9中搭建测试成功
  • 上述文字皆为个人看法,如有错误或建议请及时联系我
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-15,,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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