什么是JWT

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

基于token的鉴权机制

基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。

流程上是这样的:

  • 用户使用用户名密码来请求服务器
  • 服务器进行验证用户的信息
  • 服务器通过验证发送给用户一个token
  • 客户端存储token,并在每次请求时附送上这个token值
  • 服务端验证token值,并返回数据

这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持CORS(跨来源资源共享)策略,一般我们在服务端这么做就可以了Access-Control-Allow-Origin: *

JWT具体简介:文档

我们,已经初步了解了JWT认证,那么接下来我们就进行使用介绍了。

首先,我们需要安装第三方模块。

pip install djangorestframework-jwt

其次,我们还需要在Django的配置文件中进行相应的配置。

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}

最后,我们需要在路由中指定一下我们使用的是JWT认证方式。

from rest_framework_jwt.views import obtain_jwt_token
from django.conf.urls import url
# from . import views urlpatterns = [
# 登录路由
url(r'^authorizations/$', obtain_jwt_token),
]

最新文章

  1. [BZOJ 2819]Nim
  2. HTML DOM Element
  3. js随笔,css和js禁止网页选择文本,table的class样式使得td的class样式失效,jquery获得元素坐标
  4. Struts数据效验
  5. PHP与C++的不同
  6. Oracle EBS 如何月结、对账[Z]
  7. C++ Input & Output
  8. Linux控制脚本:信号捕捉,作业控制,调整谦让度,以及计划任务
  9. html页面头部里的meta
  10. 泛型与object
  11. python requests提示警告InsecureRequestWarning
  12. group_concat的使用
  13. js正则表达式讲的最好的
  14. Java创建多线程和线程安全集合Vector
  15. spring整合redis之hello
  16. 深入浅出 kvm qemu libvirt
  17. AMQ5540, AMQ5541 and AMQ5542, application did not supply a user ID and password, 2035 MQRC_NOT_AUTHORIZED
  18. 机器学习经典论文/survey合集
  19. spring mvc convention over configuration 之 RequestToViewNameTranslator
  20. 吉哥系列故事——完美队形I

热门文章

  1. Day6 - D - Tree 园丁的烦恼 HYSBZ - 1935
  2. docker centos 镜像中安装python36详解!生成centos+python36的基础镜像
  3. windows上使用git
  4. asp.net+sql数据库学生信息管理系统
  5. mysql 分组查询入门
  6. 小程序开发顶部TAB栏和侧边分类点击
  7. 【转】R语言函数总结
  8. Oracle SQL 异常处理
  9. 查看linux硬件的信息
  10. 记录一次ajax使用