sa_token_core/token/
generator.rs1use uuid::Uuid;
6use crate::config::{TokenStyle, SaTokenConfig};
7use crate::token::TokenValue;
8
9pub struct TokenGenerator;
10
11impl TokenGenerator {
12 pub fn generate(config: &SaTokenConfig) -> TokenValue {
14 match config.token_style {
15 TokenStyle::Uuid => Self::generate_uuid(),
16 TokenStyle::SimpleUuid => Self::generate_simple_uuid(),
17 TokenStyle::Random32 => Self::generate_random(32),
18 TokenStyle::Random64 => Self::generate_random(64),
19 TokenStyle::Random128 => Self::generate_random(128),
20 }
21 }
22
23 pub fn generate_uuid() -> TokenValue {
25 TokenValue::new(Uuid::new_v4().to_string())
26 }
27
28 pub fn generate_simple_uuid() -> TokenValue {
30 TokenValue::new(Uuid::new_v4().simple().to_string())
31 }
32
33 pub fn generate_random(length: usize) -> TokenValue {
35 use sha2::{Sha256, Digest};
36 let uuid = Uuid::new_v4();
37 let random_bytes = uuid.as_bytes();
38 let hash = Sha256::digest(random_bytes);
39 let hex_string = hex::encode(hash);
40 TokenValue::new(hex_string[..length.min(hex_string.len())].to_string())
41 }
42}
43
44