Python Web框架Django怎么使用jwt获取用户信息
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Python Web框架Django怎么使用jwt获取用户信息",在日常操作中,相信很多人在Python Web框架Django怎么使用jwt获取用户信息问题上存在疑惑,小编查阅了各
千家信息网最后更新 2026年11月01日Python Web框架Django怎么使用jwt获取用户信息
这篇文章主要介绍"Python Web框架Django怎么使用jwt获取用户信息",在日常操作中,相信很多人在Python Web框架Django怎么使用jwt获取用户信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python Web框架Django怎么使用jwt获取用户信息"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
undefined
jwt:json web token
在用户注册登录后,记录用户登录状态,我们可以用cookie和session来做状态保持,cookie存储在客户端,安全性低,session存储在服务器端,安全性高,但是在分布式架构中session不能同步化,所以我们用jwt来验证接口安全
组成:头部 载荷 签证
Jwt服务端不需要存储token串,用户请求时携带着经过哈希加密和base64编码后的字符串过来,服务端通过识别token值判断用户信息、过期时间等信息,在使用期间内不可能取消令牌或更改令牌权限。
jwt的安装与配置
# 安装 pip install djangorestframework-jwtFrom rest_framework_jwt.authentication import JSONWebTokenAuthenticationSettings.pyINSTALLED_APPS = [ ''' 'rest_framework.authtoken', ''']################### 2、配置jwt验证 ######################REST_FRAMEWORK = { # 身份认证 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ),}import datetime JWT_AUTH = { 'JWT_AUTH_HEADER_PREFIX': 'JWT', 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),}AUTH_USER_MODEL='app.User' # 指定使用APP中的 model User进行验证在django中,我们用内置的User表做登录功能
from rest_framework_jwt.views import obtain_jwt_token # 验证密码后返回tokenurlpatterns = [ re_path(r'v1/login/$', obtain_jwt_token,name='login'), # 用户登录后返回token]
前端获取到token并且setitem
var token = 'JWT ' + data.tokenlocalStorage.setItem('token', token);在我们封装的拦截器里有请求拦截器和响应拦截器,需要在每次发起请求的时候获取token
import Axios from 'axios'import { Toast } from 'vant';import URLS from '../../config/urls' //1、使用自定义配置新建一个 axios 实例const instance = Axios.create({ baseURL: URLS.API_URL, responseType: 'json',}); //2、添加请求拦截器:每次发送请求就会调用此拦截器,添加认证tokeninstance.interceptors.request.use( config => { //发送请求前添加认证token, console.log(localStorage.getItem('token')) config.headers.Authorization = localStorage.getItem('token'); # 获取token // config.headers.Authorization = sessionStorage.getItem('token') return config }, err => { return Promise.reject(err) }); // 3、响应拦截器instance.interceptors.response.use( response => { if (response.status === 200) { return Promise.resolve(response); } else { return Promise.reject(response); } }, // 服务器状态码不是200的情况 error => { if (error.response.status) { switch (error.response.status) { // 401: 未登录 // 未登录则跳转登录页面,并携带当前页面的路径 // 在登录成功后返回当前页面,这一步需要在登录页操作。 case 401: router.replace({ path: '/login', query: { redirect: router.currentRoute.fullPath } }); break; // 403 token过期 // 登录过期对用户进行提示 // 清除本地token和清空vuex中token对象 // 跳转登录页面 case 403: Toast({ message: '登录过期,请重新登录', duration: 1000, forbidClick: true }); // 清除token localStorage.removeItem('token'); store.commit('loginSuccess', null); // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 setTimeout(() => { router.replace({ path: '/login', query: { redirect: router.currentRoute.fullPath } }); }, 1000); break; // 404请求不存在 case 404: Toast({ message: '网络请求不存在', duration: 1500, forbidClick: true }); break; // 其他错误,直接抛出错误提示 default: Toast({ message: error.response.data.message, duration: 1500, forbidClick: true }); } return Promise.reject(error.response); } }); export default instance这样即完成了jwt接口安全的认证
那么在python后端如何去获取jwt并提取我们需要的信息呢?
from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework.views import exception_handlerfrom rest_framework_jwt.utils import jwt_decode_handler# 获取登陆的用户 token = request.META.get('HTTP_AUTHORIZATION')[4:] token_user = jwt_decode_handler(token) user_id = token_user['user_id'] # 获取用户id这个方法不用在前端封装getitem token 或者从前端传过来token然后获取.vuevar formdata = { id : this.$route.params.id, // 获取/id // this.$route.query.subid 获取?subid=id token: localStorage.getItem('token'), } postCreate(formdata).then(resp=>{ console.log(resp) alert(resp.mes) }).catch(err=>{ alert(err) console.log(err) }) }python views.pydef post(self,request): data = request.data # 获取post方法的数据 # print(data) token = data.get('token')[4:] toke_user = jwt_decode_handler(token) user_id = toke_user['user_id'] def get(self,request): data = request.query_params # 获取get方法的参数到此,关于"Python Web框架Django怎么使用jwt获取用户信息"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
登录
用户
信息
页面
拦截器
框架
安全
方法
学习
服务
认证
验证
前端
状态
存储
配置
成功
令牌
安全性
接口
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网龙头
科技类互联网
与互联网科技公司
华宇互联网科技
互联网科技小贷
唐信互联网科技
丰台科技园 互联网
西安互联网科技公司
广州凡科互联网科技
上海万想互联网科技
互联网前沿科技
居家互联网科技有限公司
互联网科技创新企业排名
科技赋能互联网健康
互联网大会黑科技排名
互联网科技公司实习生
链环科技传统企业怎么转型互联网
互联网营销推广黑科技
互联网科技职业技能培训学校
三亚科技创新互联网基地
厦门中拓互联网络科技有限公司
互联网电商科技
科技互联网公司装修
猪兼强互联网科技
紫鲸互联网科技
狮子座互联网科技有限公司
互联网科技股午盘股票涨跌
晓花互联网科技有限公司网址
小米互联网科技园入驻
唐山双旺合互联网科技产业园