背景,项目需要使用python做项目,如果要和其它微服务通信的话,需要验证请求体是否存在数据库。验证方式是从redis中取出session,session里面会保存了验证的信息。(只需要获取session的全数字的user_id即可)
具体代码如下:
(1)导入的包:
import redis
import re
(2)获取连接对象
r1 = redis.Redis(host='192.168.123.220', password='cwcwaaaaa', port=6379, db=0)
(3)由于是hash值,需要通过 hget() 方法来获取得到aa,然后把字节转换成字符串bb,这个时候依然是乱码的,但是数字是不会乱码的,通过正则表达式获取empid,完成!
aa = r1.hget("spring:session:sessions:027b6fd1-34de-484c-9d84-c3e5fc79f809","sessionAttr:_session_employee_")
bb = str(aa, encoding="utf-8",errors='ignore')
empid = re.findall('[0-9]{7}', bb)[0]
print(empid)
总结:就算无法把hash重新转换成具体能看懂的值,但是由于hash里面没有把数字也hash掉,所以可以获取到员工编号
本文介绍了如何使用Python通过Redis获取微服务通信时的session信息。通过Redis连接获取hash值,再利用正则表达式从乱码字符串中提取全数字的user_id,即便无法完全解码hash,也能确保数字部分不受影响。
&spm=1001.2101.3001.5002&articleId=119420556&d=1&t=3&u=4bf435d7d0ac402b8de8169615a325bf)
1273

被折叠的 条评论
为什么被折叠?



