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

  

最新文章

  1. 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题
  2. decode行转列,case when,
  3. android151 笔记
  4. 菜鸟级SQL Server21天自学通(文档+视频)
  5. Socks5协议中文文档
  6. PHP. 03 .ajax传输XML、 ajax传输json、封装
  7. zabbix-server端与zabbix-agent端部署与监控
  8. 【linux】 vsftpd自动
  9. thymeleaf 页面获取当前页面的完整URL地址
  10. 学习excel的使用技巧统计文本出现的次数
  11. AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
  12. fatal error: vector: No such file or directory
  13. 设计模式原则(6)--Open-Closed Principle(OCP)--开闭原则
  14. PHP 导出简单文本内容(word txt等)
  15. 玩转X-CTR100 l STM32F4 l PS2无线手柄-4WD智能小车
  16. 如何在Qt资源文件中包含和释放exe等各种类型文件?
  17. sql语句应考虑哪些安全性?
  18. CALL TRANSACTION
  19. mysql中一些表选项
  20. pycharts实现可视化

热门文章

  1. Linux简易APR内存池学习笔记(带源码和实例)
  2. Azure CosmosDB (6) 冲突类型和解决策略
  3. 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
  4. JNDI是什么
  5. 阿里云ssl负载均衡证书配置
  6. 五、使用druid管理数据库,mybatis连接mysql数据库
  7. C# 时钟控件
  8. udp重发
  9. Startup 类
  10. yml文件搞一波