DRF—JWT 前后端分离Token认证机制

         这是我的第一篇博客,记录一下!!   早上看到一篇英文文摘我觉得写的很好:If you're willing to take some risks, if you're willing to really go out and show appreciation and you're willing to really look at ideas, even if they're crazy, through the lens of possibilities, you'll build a bigger and bigger sail to catch the winds of luck.承担风险,心怀感激,越努力越幸运。共勉!!,接下来我要经常记录自己的学习笔记和idea,和大家一起进步。

        言归正传,在项目开发中,一般会按照上图所示的过程进行认证,即:用户登录成功之后,服务端给用户浏览器返回一个token,以后用户浏览器要携带token再去向服务端发送请求,服务端校验token的合法性,合法则给用户看数据,否则,返回一些错误信息。

传统token方式和jwt在认证方面有什么差异?

  • 传统token方式

    1. 用户登录成功后,服务端生成一个随机token给用户,并且在服务端(数据库或缓存)中保存一份token,以后用户再来访问时需携带token,服务端接收到token之后,去数据库或缓存中进行校验token的是否超时、是否合法。
  • jwt方式

    1. 用户登录成功后,服务端通过jwt生成一个随机token给用户(服务端无需保留token),以后用户再来访问时需携带token,服务端接收到token之后,通过jwt对token进行校验是否超时、是否合法。

JWT

        用户登录:服务器给用户返回一个token(服务器不保存)

        以后用户再来访问时,需要携带token,服务器获取token后再取token的校验

JWT实现过程:

用户提交用户名和密码给服务器,如果登陆成功,使用JWT创建一个token,并返回给用户

eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJsaCIsImV4cCI6MTYyNzQ2MzI0N30.wL4LrFuEwr6WBFk41yOpGtfUaYyePcUjv-gDLMH9mn8

JWT由三段字符串组成并连接起来

                第一段字符串。HEADER,内部包括算法/token类型

                Json转化成字符串,然后做base64url加密

                第二段字符串,palyload自定义值

                第三段字符串,首先对第一二部份密文拼接起来

以后用户再来访问时,需要携带token,后端需要对token进行校验

                获取token

                对token进行切割

                对第二段进行解密base64url,获取payload信息,并检测是否超时

                对一二部分拼接,再次执行加密

一、DRF-JWT认证(后端实现):

  1. 1新建jwt_auth.py对token进行encode和decode

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import jwt
import datetime
from jwt import exceptions
JWT_SALT = 'iv%x6xo7l7_u9bf_u!9#g#m*)*=ej@bek5)(@u3kh*72+unjv='

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值