python中封装token问题

目录
  • python 封装token
  • 如何封装token,直接调用
  • 总结

python 封装token

import datetime

class MyJwt:

    def __init__(self):
        # 加密密钥
        self.password = "1231231241234refd"

    # 加密方法
    def encode_jwt(self,userinfo):

        # 加密操作
        encode_srt = jwt.encode(userinfo,self.password,algorithm="HS256")

        try:
            encode_srt = str(encode_srt,"utf-8")
        except Exception as e:
            pass
        return encode_srt

    # 时常加密
    # userinfo :用户信息
    # mytime: 设置过期时间
    def encode_jwt_t(self,userinfo,mytime):
        playload = {
            'exp': int((datetime.datetime.now()+datetime.timedelta(seconds=mytime)).timestamp()),
            'data':userinfo
        }
        # 加密操作
        encode_srt = jwt.encode(playload,self.password, algorithm="HS256")

        try:
            encode_srt = str(encode_srt, "utf-8")
        except Exception as e:
            pass
        return encode_srt

    # 解密
    def decode_jwt(self,jwt_str):
        return jwt.decode(jwt_str,self.password,algorithms=['HS256'])

如何封装token,直接调用

import jwt
import time

class JwtTool:
    #生成token
    def create_token(self, payload, ex):
        a = "sss"
        payload['ex'] = int(time.time()) + ex
        try:
            token = jwt.encode(payload, key=a)
            print("生成token成功", token)
            return token
        except Exception as e:
            print("生成token的错误", e)
            return False
    #解析token
    def check_token(self, token):
        try:
            a = "sss"
            payload = jwt.decode(token, key=a, algorithms="HS256")
            print("解析token成功", payload)
            return payload
        except Exception as e:
            print("解析token错误", e)
            return False

#单独文件测试
if __name__ == '__main__':
    from app import app

    with app.app_context():
        j = JwtTool()
        payload = {
            "ia": 1,
            "name": "小米"
        }
        token = j.create_token(payload, 200)
        print("-----", token)
        # token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYSI6MSwibmFtZSI6Ilx1NWMwZlx1N2M3MyJ9.ru9-3H7Z9abbkKXkZMbekeAEdlE-COw9CASYMxIG728"
        # print("++++",j.check_token(token))

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python 产生token及token验证的方法

    1.前言 最近在做微信公众号开发在进行网页授权时,微信需要用户自己在授权url中带上一个类似token的state的参数,以防止跨站攻击. 在经过再三思考之后,自己试着实现一个产生token和验证token的方案.接下就把code贴出来.希望读者指导一下. 2.产生token 原理: 通过hmac sha1 算法产生用户给定的key和token的最大过期时间戳的一个消息摘要,将这个消息摘要和最大过期时间戳通过":"拼接起来,再进行base64编码,生成最终的token 实现: impo

  • 对python的unittest架构公共参数token提取方法详解

    额...每个请求都有token值的传入,但是token非常易变,一旦变化,所有的接口用例都得改一遍token,工作量太大了... 那么有没有一种方法能把token提取出来,作为一个全局变量,作为一个参数,从而牵一发而动全身呢?? 经过探索,具体方案如下 先定义一个全局变量token类型为string 然后把请求链接定义一个变量类型为string 然后定义第三个变量=前两个变量相加 然后requests直接传第三个变量就行了 具体代码如下: class Test(unittest.TestCase

  • Python用摘要算法生成token及检验token的示例代码

    # 基础版,不依赖环境 import time import base64 import hashlib class Token_hander(): def __init__(self,out_time): self.out_time = out_time self.time = self.timer pass def timer(self): return time.time() def hax(self,str): """ 摘要算法加密 :param str: 待加密字符

  • python中封装token问题

    目录 python 封装token 如何封装token,直接调用 总结 python 封装token import datetime class MyJwt: def __init__(self): # 加密密钥 self.password = "1231231241234refd" # 加密方法 def encode_jwt(self,userinfo): # 加密操作 encode_srt = jwt.encode(userinfo,self.password,algorithm=

  • 在Python中封装GObject模块进行图形化程序编程的教程

    Python 是用于编码图形界面的极佳语言.由于可以迅速地编写工作代码并且不需要费时的编译周期, 所以可以立即使界面启动和运行起来,并且不久便可使用这些界面. 将这一点与 Python 易于链接本机库的能力结合起来,就可以形成一个出色的环境. gnome-python 是为 Python 封装 GNOME 及其相关库的软件包. 这使您能够用 Python 编写外观与核心 GNOME 应用程序完全相同的应用程序,而所花的时间只是用 C 编写该应用程序所花的一部分. 然而,不用 C 进行编程会有一个

  • python中Task封装协程的知识点总结

    说明 1.Task是Future的子类,Task是对协程的封装,我们把多个Task放在循环调度列表中,等待调度执行. 2.Task对象可以跟踪任务和状态.Future(Task是Futrue的子类)为我们提供了异步编程中最终结果的处理(Task类还具有状态处理功能). 3.把协程封装成Task,加入一个队列等待调用.刚创建Task的时候不执行,遇到await就执行. 实例 import asyncio async def func(): print(1) await asyncio.sleep(

  • class类在python中获取金融数据的实例方法

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就class类在python中获取金融数据的方法为大家带来讲解. 使用tushare获取所有A股每日交易数据,保存到本地数据库,同时每日更新数据库:根据行情数据进行可视化和简单的策略分析与回测.由于篇幅有限,本文着重介绍股票数据管理(下载.数据更新)的面向对象编程应用实例. #导入需要用到的模块 impor

  • 如何在Python中编写接口和请求外部接口

    目录 一.引入requests库 二.Get请求 三.Post请求 1.以form表单提交的方式 2.以json字符串的格式来提交 3.文件上传 四.总结 一.引入requests库 Python是通过requests库来请求接口的,所以,首先需要通过pip安装requests库. pip install requests==2.21.0 #文件上传才会用 pip install requests-toolbelt==0.9.1 说明:本文编写的接口用到的是Flask框架关于Flask框架的使用

  • python中文件变化监控示例(watchdog)

    在python中文件监控主要有两个库,一个是pyinotify ( https://github.com/seb-m/pyinotify/wiki),一个是watchdog(http://pythonhosted.org/watchdog/).pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.因为我主要用于Windows平台,所以下面着重介绍watchdog(推荐大家阅读一下watchdog实现源码,有利于深刻的理解其中的原理). watchdog在不

  • 在Python中使用模块的教程

    Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test(): args = sys.argv if len(args)==1: print 'Hello, world!' elif len(a

  • Python中的装饰器用法详解

    本文实例讲述了Python中的装饰器用法.分享给大家供大家参考.具体分析如下: 这里还是先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: 复制代码 代码如下: @makebold @makeitalic def say():    return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出的答案是: 复制代码 代码如下: def makebold(fn):    

  • Python中使用haystack实现django全文检索搜索引擎功能

    前言 django是python语言的一个web框架,功能强大.配合一些插件可为web网站很方便地添加搜索功能. 搜索引擎使用whoosh,是一个纯python实现的全文搜索引擎,小巧简单. 中文搜索需要进行中文分词,使用jieba. 直接在django项目中使用whoosh需要关注一些基础细节问题,而通过haystack这一搜索框架,可以方便地在django中直接添加搜索功能,无需关注索引建立.搜索解析等细节问题. haystack支持多种搜索引擎,不仅仅是whoosh,使用solr.elas

  • Python中使用多进程来实现并行处理的方法小结

    进程和线程是计算机软件领域里很重要的概念,进程和线程有区别,也有着密切的联系,先来辨析一下这两个概念: 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 2.关系 一个线程可以创建和撤

随机推荐