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}
    
    
    # 当超时或值有误则会报错
    
  • 相关阅读:
    Java中的内存分配机制
    javac程序的内存分配
    Linux/Ubuntu下解压命令
    Java跨平台原理
    Java数据类型中String、Integer、int相互间的转换
    Maven的安装、配置及使用入门
    Eclipse快捷键大全(转载)
    shell编程基础
    ubuntu 安装source insight
    ubuntu samba
  • 原文地址:https://www.cnblogs.com/guanxiying/p/13485505.html
Copyright © 2011-2022 走看看