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

1.安装djangorestframe

pip install djangorestframe

2.在settings.py的INSTALLED_APPS中加入:

INSTALLED_APPS = [
...
'rest_framework',
'rest_framework.authtoken', # 设置token
...
]

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

1.安装JWT

pip install djangorestframework-jwt

2.配置jwt

# 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',
),
}

解决api跨域请求

1.安装包

pip install django-cors-headers

2.配置django-cors-headers

INSTALLED_APPS = [
...
'corsheaders',
...
] MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware', # 注意顺序
...
) #跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = () CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
) CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)

简单实用JWT

1.配置jwt有效时间

import datetime
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300), # days=7
}

2.jwt验证

from rest_framework_jwt.views import obtain_jwt_token

url(r'^api-token-auth/', obtain_jwt_token),

3.配置页面访问权限

from rest_framework_jwt.authentication import JSONWebTokenAuthentication

class GoodsListViewSet(CacheResponseMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
authentication_classes = (JSONWebTokenAuthentication,)

前端请求

1.使用post方法获取token并存入html的localStorage中

<script type="text/javascript">
function post_test() {
$.post("http://10.127.48.204:8000/api-token-auth/",{
'username':'earthchen',
'password':'xxxxxxxx'
},
function(result){
if(result){
localStorage.token=result.token; 存入数据
}
})
}
</script>

2.在请求数据时需要在头部添加token

<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>

  

django-rest-framework配置json web token的更多相关文章

  1. 使用json web token

    由来 做了这么长时间的web开发,从JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用php框架thinkPHP,到现在的nodejs,我自己的看法是 ...

  2. django-rest-framework之 json web token方式完成用户认证

    json web token的介绍:https://blog.csdn.net/kevin_lcq/article/details/74846723 1. 安装 $ pip install djang ...

  3. 42.JSON Web Token认证

    JSON Web Token认证介绍 简称JWT认证,一般用于用户认证 JWT是一种相当新的标准,可用于基于token的身份验证 与内置的TokenAuthentication方案不同,JWT不需要使 ...

  4. Hacking JWT(JSON Web Token)

    0x01 JWT工作流程 JSON Web Token(JWT)是一个非常轻巧的规范. 这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. JWT常被用于前后端分离,可以和Restful ...

  5. Java JWT: JSON Web Token

    Java JWT: JSON Web Token for Java and Android JJWT aims to be the easiest to use and understand libr ...

  6. 如何在SpringBoot中集成JWT(JSON Web Token)鉴权

    这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...

  7. JWT(JSON Web Token) 【转载】

    JWT(JSON Web Token) 什么叫JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. 一般来说,互联网用户认证是这样子的. 1.用户向服务器发送用户名和密码. ...

  8. JWT(JSON Web Token)

    摘要: 在Web应用中,使用JWT替代session并不是个好主意 适合JWT的使用场景 抱歉,当了回标题党.我并不否认JWT的价值,只是它经常被误用. 什么是JWT 根据维基百科的定义,JSON W ...

  9. webapp用户身份认证方案 JSON WEB TOKEN 实现

    webapp用户身份认证方案 JSON WEB TOKEN 实现Deme示例,Java版 本项目依赖于下面jar包: nimbus-jose-jwt-4.13.1.jar (一款开源的成熟的JSON ...

随机推荐

  1. Javascript 使用postMessage对iframe跨域传值或通信

    实现目标:两个网站页面实现跨域相互通信 当前例子依赖于 jQuery 3.0 父页面代码:www.a.com/a.html <iframe id="myIframe" src ...

  2. netty拆包粘包

    客户端 tcp udp socket网络编程接口 http/webservice mqtt/xmpp 自定义RPC (dubbo) 应用层 服务端 ServerSocket ss = new serv ...

  3. Ignite(一): 概述

    1.关于Apache Ignite Apache Ignite是一个以内存为中心的分布式数据库.缓存和处理平台,支持事务.分析以及流式负载,可以在PB级数据上享有内存级的性能.比传统的基于磁盘或闪存的 ...

  4. 【申嵌视频】5-1 ubuntu下安装VMWare Tools工具

    [申嵌视频]5-1 ubuntu下安装VMWare Tools工具 适合搭建mini2440, Tiny6410, smart210,Tiny4412, NanoPC-T2, NanoPC-T3, N ...

  5. CSS3 Vendor-prefixing

    Browser vendors needed a way to add support for new features that were not yet standardized, but wit ...

  6. Windows 上安装 MySQL(8.0.11)

    1.接下来我们需要配置下 MySQL 的配置文件 打开刚刚解压的文件夹 C:\web\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息: [m ...

  7. spring4学习笔记

    IOC public class IServiceImpl implements IService { public void IserviceImpl(){} @Override public vo ...

  8. python网页爬虫开发之七-多线程爬虫示例01

    from urllib.request import quote import urllib.request from bs4 import BeautifulSoup import re impor ...

  9. Linux背背背(5)

    目录: 1.rpm 2.运行模式 3.网卡 rpm软件管理 在Linux中的rpm其实有点类似于windows下的“xxx电脑管家”.“xxx软件管家”,其作用就是管理软件(查询软件的安装情况,安装软 ...

  10. MySQL 设置cmd命令行登陆

    1.MySQL自带工具的存放路径: D:\Program Files\MySQL\MySQL Server 5.6\bin 为了方便使用,我们可以将以上路径添加到系统的环境变量path中 如果你不放, ...