首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在django中从token获取userId

在Django中,可以通过token来获取userId的方法如下:

  1. 首先,确保你已经安装了django-rest-frameworkdjangorestframework-jwt这两个库,它们提供了处理身份验证和令牌的功能。
  2. 在Django的设置文件中,配置REST_FRAMEWORKJWT_AUTH相关的参数,例如:
代码语言:txt
复制
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ],
}

JWT_AUTH = {
    'JWT_SECRET_KEY': 'your-secret-key',
    'JWT_ALGORITHM': 'HS256',
}
  1. 创建一个视图函数,用于解析token并获取userId。可以使用jwt_decode_handler函数来解码token,然后从解码后的数据中获取userId。示例代码如下:
代码语言:txt
复制
from rest_framework_jwt.utils import jwt_decode_handler

def get_user_id_from_token(request):
    token = request.META.get('HTTP_AUTHORIZATION', '').split(' ')[1]
    decoded_token = jwt_decode_handler(token)
    user_id = decoded_token['user_id']
    return user_id
  1. 在你的路由中,将上述视图函数与一个URL路径进行绑定,例如:
代码语言:txt
复制
from django.urls import path

urlpatterns = [
    path('get-user-id/', get_user_id_from_token),
]

这样,当你发送一个带有token的请求到/get-user-id/路径时,视图函数将解析token并返回对应的userId。

需要注意的是,上述代码中的your-secret-key应该替换为你自己的密钥,用于加密和解密token。此外,还需要确保请求中包含了正确的Authorization头部,例如:Authorization: Bearer your-token

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)可以用于支持Django应用的部署和数据存储。你可以访问腾讯云官网了解更多关于这些产品的详细信息和使用指南。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Djangomysql数据库获取数据传到echarts方式

(1)首先在要绘图的页面传入数据库中提取的参数,这一步通过views可以实现; (2)然后是页面加载完成时执行的函数ready,调用方法f; (3)在函数f获取参数,此时是string类型,需要将其转换为...json对象,使用eval即可; (4)json对象的每一个元素均为string(可以使用typeof()判断),需要取出每一个成员将其转换为json对象; (5)在echarts模块函数调用函数f,...获取所需的数据 补充知识:djangoMySQL获取当天的数据(ORM) 如下所示: QueuedrecordRealTime.objects.filter(date_take__gte=datetime.datetime.now...以上这篇Djangomysql数据库获取数据传到echarts方式就是小编分享给大家的全部内容了,希望能给大家一个参考。

5K20

Django框架开发016期 数据的更新,用户信息更新页面开发

但是,我个人在使用过程,还是推荐需要提前掌握好数据库基础知识。 您可以去学习刘金玉的《零基础数据库教程》,这样可以更清晰地理解django程序数据的增删改查。...>,大家注意,这个就是Django框架由url传递给视图函数参数的一种方法。...#根据userID获取指定的用户信息,用来更新指定的用户信息 def getLjyUserByUserID(request,userID):#这里的第二个参数userID就是路由传递而来的 try...}}/" method="post"> {%csrf_token%} 编号:<input type="text" name="<em>userID</em>" value="{{currentUser.<em>userID</em>...,这两个函数都接收<em>从</em>url传入的<em>userID</em>这个参数,然后根据这个<em>userID</em>利用objects的get方法到数据库去<em>获取</em>用户数据。

7610

美多商城项目(十一)

3.5.1业务逻辑 1.获取查询字符串的图片验证码和验证码id。 2.redis缓存取出图片验证码内容。....前端发送请求,带上上一步生成的 access_token; 2.在模型类定义验证 token 的方法,使用 itdangerous 提供的方法进行反验证,取出存在token 的手机号,进行判断是否在...; 3.后端编写序列化器对参数进行校验; 4.生成用于修改密码的 token,将 userid 保存进去,返回 useridtoken 4.5第四步 API: POST /users/(?...和 accesstoken 中保存的 userid 进行比较,确认了身份在进行修改。...团队开发注意事项 浅谈密码加密 Django框架的英文单词 Django数据库的相关操作 DRF框架的英文单词 重点内容回顾-DRF Django相关知识点回顾 美多商城项目导航帖

1.5K11

云中漫步,做个公众号方便生活、取悦自己

1.用户场景 按照角色进行划分如下: 用户:每个小组的下午茶接口人,购买下午茶后录入消费记录,等待报销 管理员:中心报销接口人,每季度汇总各小组消费统计数据,统一报销 2.系统交互 下午茶公众号:用户场景看...需要自己手动安装 如何在linux下安装和配置mysql,网上的文章非常全,这里不再赘述(本文采用5.7.16) yumdjango版本较低,可以自行下载需要的版本来安装(文本采用1.8.4) 上传安装包到云服务器...以本项目为例: 定义用于存储/获取的“token”和“时间戳”的函数 # 保存新的token和过期时间,覆盖原来保存的 def set_wx_token_func(newtoken, expires_at...): # 直接使用django的模型保存 token.update_token(newtoken, expires_at) # # 获取当前保存的token和过期时间(之前通过set_wx_token_func...5.微信公众号配置 登录微信公众平台,进入‘开发’-‘基本配置’ url填入在django-app开发配置的url,确保对应的view逻辑可以处理微信公众平台转发的消息 token需要与实例化wechat-python-sdk

5.9K103

JWT( JSON Web Token )的 实践,以及与 Session 对比

无状态登录 session 需要在数据库中保持用户及token对应信息,所以叫 有状态。 试想一下,如何在数据库不保持用户状态也可以登录。...如何允许用户只能在一个设备登录,微信 session: 使用 sql 类数据库,对用户数据库表添加 token 字段并加索引,每次登陆重置 token 字段,每次请求需要权限接口时,根据 token...,根据 user_id 查用户表获取 token 判断 token 是否一致。...如何允许用户只能在最近五个设备登录,诸多播放器 session: 使用 sql 类数据库,创建 token 数据库表,有 id, token, user_id 三个字段,user 与 token 表为...根据 token 获取 user_id,再根据 user_id 获取该用户有多少设备登录,超过 5 个,则删除最小 id 一行。

3.1K20

Django+Vue项目学习第五篇:vue+django发送post请求,解决csrf认证问题

本篇介绍如何在vue端向django发送post请求,以及django处理post请求的方式 这次要实现的功能是:点击【身份证ID】生成指定数量的身份证号 1....会获取不到请求body的参数) 2....import get_token def get_csrf_token(request): csrf_token = get_token(request) # 获取csrf_token的值...return JsonResponse({'token': csrf_token}) 给这个试图配置路由(等下前端需要调这个方法获取token) create_data/urls.py from django.urls...首先如果把token()函数注释掉,看看发送失败和发送成功请求的区别 可以看到,左图的请求没有携带Cookie,而我们的csrf token是通过document.cookie来获取,所以左图中的

3.6K20

Django实现SSO

认证服务器接受用户验证信息,通过,则重定向至原始URL,并携带随机生成的code信息。 服务获取code与原始URL请求后,再使用key和secret认证服务器获取token。...获取token信息之后创建session。并在响应添加Set-Cookie字段。 用户接收响应之后,设置会话cookie,也就是sessionid。...Django实现过程 为了在Django接入Oauth,先得去掉Django提供的session服务和认证服务。然后自定义一个中间件。...第一步:用户第一次访问后台时,不带cookie,所以重定向至认证服务器进行认证 第二步:认证服务器重定向至原始访问页面,不带cookie,但带有code 第三步:后台使用code认证服务器获取...token获取token之后再获取用户信息,在响应设置cookie 第四步:用户携带cookie访问后台,这时可以直接登录 """ def __init__(self, get_response

3K30

django rest framework之注册

=jwt_encode_handler(payload) additional_data={'nickname':user.nickname,'userid':user.id,'token...'account_type','code','password'] ok,上面就是最重要的序列化类的代码的 我来稍加注释 其中 VerifySerializer 是发送验证码的序列化类 作用就是去获取验证码...,可以选择是邮箱注册还是手机注册 然后去获取对应的验证码 我看了一眼手机验证码的价格 不禁留下了泪水 居然要4分钱一条 还是某鹅场,哎暂不配用手机注册 不过手机验证码注册 咱还没研究 第二个类,...=True 大家 可以代码中找到 我直接讲作用吧,加了这句代码,那么这句代码所在的那个模型的属性就不会再被drf 序列化,从而也不会再去生成对应的对象 也许你有点晕,我这么解释,你看1,我们的用户模型...,也就是UserProfile,我们是没有account这个属性的,但是我们在注册的时候,发送验证码,是一定需要这个account这个属性的 ,因为系统只有知道了你的账号,无论是电话还是邮箱 才能给你发验证码

55240

根据Token获取用户信息的N种姿势,这种最完美!

Level1:手动获取 通常token会放在header当中,最低级的获取方式就是直接header获取token,然后通过token转换获得userId,示例代码如下: @GetMapping("/...Level2:过滤器tokenuserId 在上一种方案,既然每一次调用都需要进行tokenuserId的转换,那就通过过滤器将这一转换过程统一处理。...在过滤器获得token,然后转换成userId,再把userId写回到header当中,使用时直接headeruserId即可。...获取token,转换为userId,然后匹配方法的参数名称,如果是userId,那么就将转换之后的userId赋值给对应的参数。...在resolveArgumentheader获取token,然后根据token获取对应User信息,这里可以注入UserService来获得更多的用户信息,然后将构造好的User对象返回。

8.5K43

Python 【面试总结】

# 后端的django代码 from django.shortcuts import render from dwebsocket.decorators import accept_websocket...如何解决这个单点登录问题 不管在那一台web服务器登录,都会把token值存放到我们的一个集中管理的redis服务器 但客户端携带token验证的时候,会先从redis获取,就实现单点登录 现实举例...,B的内存没有就会让重新登录 所以登录A机器的时候我们应该把token值写入到redis,A/B机器登录,都从redis获取token进行校验 session,cookie,sessionStorage...获取数据时可以本地获取会比服务器端获取快得多,所以速度更快; 安全性:WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些,不会担心截获,但是仍然存在伪造问题...simliar = Euclid(userID,userid) res.append((userid,simliar)) # res = # [('2', 0.5), ('3'

51230
领券