Rust 中的 JWT 库
有关 JSON Web 令牌是什么的更多信息,请参阅 JSON Web Tokens。
在 Cargo.toml 中添加以下内容:
# You will have to select either `aws_lc_rs` or `rust_crypto` as backend if you're not using your own
jsonwebtoken = { version = "11", features = ["aws_lc_rs"] }
# If you do not need pem decoding, you can disable the default feature `use_pem` that way:
# jsonwebtoken = {version = "11", default-features = false, features = ["aws_lc_rs"] }
serde = {version = "1.0", features = ["derive"] }通过 aws_lc_rs 和 rust_crypto 两个加密后端可供选择,其中最多只能启用一个。如果您没有选择任何功能,则需要提供自己的 CryptoProvider。
如需了解如何实现 CryptoProvider,请参阅
Rust-version 字段指定。本库目前支持以下内容:
完整的示例可在 examples 目录中找到:一个基本示例和一个带自定义标头的示例。 就进口和结构而言:
use serde::{Serialize, Deserialize};
use jsonwebtoken::{encode, decode, Header, Extras, Algorithm, Validation, EncodingKey, DecodingKey};
/// Our claims struct, it needs to derive `Serialize` and/or `Deserialize`
#[derive(Debug, Serialize, Deserialize)]
struct Claims {
sub: String,
company: String,
exp: usize,
}可以验证的声明字段。(参见 验证)
#[derive(Debug, Serialize, Deserialize)]
struct Claims {
aud: String, // 可选。 受众
exp: usize, // 可选 (validate_exp 在验证时默认为 true)。过期时间 (以 UTC 时间戳表示)
iat: usize, // 可选。在 (以 UTC 时间戳表示)
iss: String, // 可选。发行人
n
[API documentation on docs.rs](https://docs.rs/jsonwebtoken/)暂无开放 Issues,或尚未同步最近议题。