首页 > 其他分享 >rust使用jwt

rust使用jwt

时间:2024-10-23 17:33:42浏览次数:6  
标签:use Algorithm jwt token let key 使用 now rust

toml

jsonwebtoken = "9"

rs

use serde::{Deserialize, Serialize};
use chrono::Utc;
use jsonwebtoken::errors::ErrorKind;
use jsonwebtoken::{decode, encode, Algorithm, DecodingKey, EncodingKey, Header, Validation};

#[derive(Debug, Serialize, Deserialize)]
struct Claims {
    exp: i64,
    name: String,
    uid: u64
}

fn main() {
    let  now = Utc::now().timestamp(); // nanosecond -> second
    let my_claims =
        Claims {
            exp: now + 86400,
            name: "测试用户".to_string(),
            uid: 1
        };
    let key = b"secret";

    let header =
        Header { kid: Some("signing_key".to_owned()), alg: Algorithm::HS512, ..Default::default() };

    let token = match encode(&header, &my_claims, &EncodingKey::from_secret(key)) {
        Ok(t) => t,
        Err(_) => panic!(), // in practice you would return the error
    };
    println!("{:?}", token);

    let token_data = match decode::<Claims>(
        &token,
        &DecodingKey::from_secret(key),
        &Validation::new(Algorithm::HS512),
    ) {
        Ok(c) => c,
        Err(err) => match *err.kind() {
            ErrorKind::InvalidToken => panic!(), // Example on how to handle a specific error
            _ => panic!(),
        },
    };
    println!("{:?}", token_data.claims);
}

标签:use,Algorithm,jwt,token,let,key,使用,now,rust
From: https://www.cnblogs.com/qcy-blog/p/18497892

相关文章

  • 【jetson orin】jetson-stats安装与使用
    介绍:jetson状态面板,用来实时的查看jetson状态,非常有用推荐安装。安装:#下载自动安装脚本curlhttps://bootstrap.pypa.io/get-pip.py-oget-pip.py#运行安装脚本sudopython3get-pip.pysudopip3installjetson-stats运行:#输入命令就可以打开面板jtop设置风......
  • 使用qgis.core模块快速转换s57数据
    importosfromqgis.coreimport(QgsVectorLayer,QgsVectorFileWriter)#解析S57图层信息的函数defextract_s57_layer_info(s57layers:list[str])->list[tuple]:extracted_info=[]#内部的解析函数defparse_layer_info(layer_info)......
  • 化繁为简,使用 ADManager Plus 简化账户生命周期管理
    在IT环境中,编排指的是对工作流、应用程序和系统的协调管理,旨在通过简化流程来优化业务性能。IT管理员可以通过编排,从单个控制台自动执行一系列任务,例如预配账户帐户、数据库管理、事件处理、应用程序和云资源管理。编排对支持分布于本地和云端的IT服务的大型工作流至关重要。......
  • java 脚本使用不同版本jdk说明
    目录1.使用ScriptEngine执行JavaScript2.Nashorn(JDK8及以上)和工具类3.GraalVM(JDK11及以上)总结在Java中,运行或执行JavaScript脚本有几种方式,其中最常用的是通过Java内置的JavaScript引擎(Nashorn或者Rhino)来执行JavaScript代码。下面介绍几种实现方式。1.使用Scrip......
  • vue3使用踩坑总结
    1、使用reactive定义的对象定义对象时,后面由于页面需求需要,把这个对象设置为空对象,如果直接把变量设置{}会导致响应式失效!state=reactive({})由于后面业务需求需要把State设置为空对象state={}正常的做法是这样,这个时候就会出现响应式丢失问题!注:在实际应用中,你应该避免直......
  • 使用livox mid 70提取特征点过程
    参考链接使用rviz显示bag数据LOAM-Preprocessingloam_livox实现第一版读了一下驱动程序说明书创建了ros环境,创建了demo功能包,创建了类,订阅话题"/livox/lidar"激光雷达数据,不处理直接发布,发布话题"/full"在rviz中查看。说明书首先,览沃ROS驱动程序可以看到广播码说明......
  • 在SQL Server中,可以使用查询结果生成SQL语句,通常通过动态SQL来实现。以下是一些常见的
    ai查到的,用着可以的,记录下示例场景假设有一个名为Employees的表,包含EmployeeID、FirstName和LastName字段。我们想要根据查询结果生成一系列的INSERT语句。1.使用FORXMLPATH生成INSERT语句SELECT'INSERTINTOEmployees(EmployeeID,FirstName,LastName)VALUES(......
  • 拴柱说Mac之Mac的高效使用技巧第三期
    Mac的设计有着非常多的使用技巧,这些技巧能够极大的提高你的使用效率,但是还是有许多人并不知道,那么今天Mac高效使用技巧分享第三期来了Mac有一个独特的设置,那就触发角,触发角有着非常多的妙用在“系统偏好设置-桌面与屏幕保护-触发角”里可以自定义Mac的显示屏,当光标移......
  • 使用OpenSSl库实现AES-GCM-128算法(C语言)
    在C语言中使用OpenSSL库实现AES-GCM-128算法,并生成GMAC(GaloisMessageAuthenticationCode)消息认证码,通过以下步骤完成:初始化加密环境:创建一个EVP_CIPHER_CTX结构体,用于存储加密过程中的所有必要信息。设置加密算法:指定使用AES-GCM模式,以及密钥和IV(初始化向量)。处理附加认证......
  • 使用npm包-Vant Weapp
     注意电脑必须先安装了node.js,才能使用npm命令。可参考https://www.cnblogs.com/wmqxlt/p/17014445.html使用管理员权限打开命令提示符,切换目录至项目目录。先输入npminit-y生成package.json npm安装vant组件 ......