龙空技术网

pyjwt生成的token使用c++解析

求索9N8U 29

前言:

眼前看官们对“python中取得token”都比较讲究,咱们都需要了解一些“python中取得token”的相关文章。那么小编也在网摘上收集了一些关于“python中取得token””的相关资讯,希望咱们能喜欢,小伙伴们一起来了解一下吧!

有这样一个需求,项目是python做的,但有一部分是用c++做的,现在需要使用c++解析python生成的token。

python生成token有一个专门的库pyjwt,使用pip install pyjwt即可安装。

在python端生成和解析token

def JwtEncode(data)->str:    '''jwt生成token'''    strKey = "mykey"    encoded = jwt.encode(data, strKey, algorithm="HS256")    return encodeddef JwtDecode(token)->dict:   '''jwt解析token'''   strKey = "mykey"   data = jwt.decode(token, strKey, algorithms="HS256")   return data 

使用c++解析token, 在github上找到一个c++解析jwt token的库:

下载编译即可,编译也很简单。

要使用这个库,还需要一个库,那就是nlohmann/json库,这是一个强大的json库,同样下载编译

这个编译可能会遇到些问题,需要自己处理,比如我遇到的问题就是newline in constant,我是直接注释掉了。

使用cpp-jwt解析token

#pragma once#include <jwt/jwt.hpp>namespace TokenValid {	int JwtTokenValid(const std::string& strToken) {		using namespace jwt::params;		QString tokeyKey("mykey");		jwt::jwt_object decObj = jwt::decode(strToken, algorithms({ "HS256" }), secret(tokeyKey.toStdString()));		// 判断是否有openid		jwt::jwt_payload payloadObj = decObj.payload();		if (!payloadObj.has_claim("userid")) {			return 0;		}		if (!payloadObj.has_claim("openid")) {			return 0;		}		return payloadObj.get_claim_value<int>("userid");	}}

标签: #python中取得token