当我们需要的用户数据在redis中时如何获取

前言

在我工作的项目中,接口响应数据只有msg和code时,想获取一些其他用户数数据得去redies中获取,通过研究发现后端使用jwt-token的方式,将用户信息加密放到了redies中,那么我不就也可以通过反向操作token来获取redies中的用户信心吗?说干就干:

# 连接Redies数据库
import redis
from loguru import logger


class HDRedis:

    def __init__(self):
        try:
            # redis链接,redis连接信息可放在配置文件方便后续修改
             conf = ConfigParser()
        	conf.read(conf_path, encoding="utf-8")
            self.r = redis.Redis(
                host=conf.get("redis", "host"),
                db=conf.get("redis", "db"),
                port=conf.getint("redis", "port"),
                password=conf.get("redis", "password"),
                decode_responses=conf.get("redis", "decode_responses")
            )
            logger.info("redis链接成功!!!")
        except:
            logger.warning("redis连接失败")

    def close_redis(self):
        self.r.close()

    def get_value_for_key(self, data):
        try:
            result = self.r.get(data)
            logger.info(f"redis查找key为{data}的值为:{result}")
            return result
        except:
            logger.warning(f"未在redis中找到key为:{data}的值")
            return None

# 封装jwt读取redies数据的方法
from authlib.jose import jwt
from tools.handler_redis_db import HDRedis
from loguru import logger
import json

def jwt_token_decode(token):
	# 其中"abcdefghijklmnopqrstuvwxyz"为加密使用的字符串
    return jwt.decode(token, "abcdefghijklmnopqrstuvwxyz")


def get_redis_data(token):
    jwt_result = jwt_token_decode(token)
    logger.warning(f"jwt得到数据:{jwt_result}")
    login_key = "login_tokens:" + jwt_result['login_user_key']
    hr = HDRedis()
    logger.info(f"读取数据:{login_key}")
    result = json.loads(hr.get_value_for_key(login_key))
    hr.close_redis()
    if result:
        return result
    else:
        logger.warning("未获取到数据")
        return None

if __name__ == '__main__':
    # 查看token得到的redies缓存数据
    token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImIyZ****"
    result = get_redis_data(token)

需要注意的是使用jwt前需要了解RD的加密方式在jwt的处理中是否存在,例如: HS521 HS520 等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值