zoukankan      html  css  js  c++  java
  • itsdangerous模块实现邮箱令牌认证

    前言:用户通过邮箱来找回密码时通常是服务端朝用户邮箱发送一个修改密码的链接地址,用户通过该访问该地址来修改密码。
    针对上述需求,我们有两种方法可以实现

    • 方法一:只需要在返回给用户的修改密码的url后拼接一个串(令牌)然后后端讲串存入redis缓存数据库中并设置过期时间,用户访问修改密码页面时先朝着后端接口发起一个get请求,讲串取出到redis里找,如果存在才让他继续访问,否则就直接返回令牌失效。

    方法二:使用itsdangerous生成临时身份令牌

    itsdangerous是一个django第三方的用来生成临时身份令牌的模块,内部默认使用了HMAC和SHA1来签名,基于Django签名模块。
    使用:
          实例化一个序列化器对象,传入两个参数:私钥,过期时间
          使用dumps对数据加密,loads对数据解密,如果数据被篡改就会抛出BadSignature异常,如果超时则会抛出Signature expired异常
    

    安装

    pip install itsdangerous
    

    使用

    import itsdangerous
    
    salt='sdaf'#加盐
    t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#过期时间600秒
    
    info = {'username':'yangfan','user_id':1}
    
    # =========加密token============
    res=t.dumps(info)
    token=res.decode()#指定编码格式
    print(token)
    # eyJleHAiOjE1NzUwMDczNjgsImlhdCI6MTU3NTAwNjc2OCwiYWxnIjoiSFM1MTIifQ.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InlhbmdmYW4ifQ.yUb3PW53V89ZX4Ci2qeaBJIiizt0JUAN_W9BBzg8QkIR1-uO7NQl6jizSUReOFGanWzfG19t7XFHCWv1JGMIZw
    
    
    # =========解密token============
    
    res = t. ('eyJhbGciOiJIUzUxMiIsImV4cCI6MTU3NTAwNzM0MywiaWF0IjoxNTc1MDA2NzQzfQ.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InlhbmdmYW4ifQ.k-Q1VyN2TOlQ4flHHoiOYEMRaUEiN5Ms2JgeRdnCZWbQB-WwQ1FScoBWxFGkCYEPoWVpAjQxDBQeBesmulZupQ')
    # res = t.loads(token)
    print(res)
    # {'username': 'yangfan', 'user_id': 1}
    
    
    # 当超时或值有误则会报错
    
  • 相关阅读:
    C++中重载、重定义、重写概念辨析
    虚函数,抽象函数
    取出一个int的每一位,用算法
    Typedef和define
    枚举
    基于 ThinkPHP 3.2.3 的页面静态化功能的实现
    骑行在华盛顿 针对320万次共享单车骑行数据的分析
    骑行在华盛顿 针对320万次共享单车骑行数据的分析
    分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
    分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
  • 原文地址:https://www.cnblogs.com/guanxiying/p/13485505.html
Copyright © 2011-2022 走看看