Skip to content

Commit 3fbb12d

Browse files
yuegcyuegc
authored andcommitted
fix:修复generate_random生成128长度token
1 parent b8ebc75 commit 3fbb12d

1 file changed

Lines changed: 36 additions & 3 deletions

File tree

sa-token-core/src/token/generator.rs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::config::{TokenStyle, SaTokenConfig};
1010
use crate::token::TokenValue;
1111
use crate::token::jwt::{JwtManager, JwtClaims, JwtAlgorithm};
1212
use chrono::Utc;
13-
use sha2::{Sha256, Digest};
13+
use sha2::{Sha256, Sha512, Digest};
1414

1515
pub struct TokenGenerator;
1616

@@ -74,10 +74,9 @@ impl TokenGenerator {
7474

7575
/// 生成随机字符串
7676
pub fn generate_random(length: usize) -> TokenValue {
77-
use sha2::{Sha256, Digest};
7877
let uuid = Uuid::new_v4();
7978
let random_bytes = uuid.as_bytes();
80-
let hash = Sha256::digest(random_bytes);
79+
let hash = Sha512::digest(random_bytes);
8180
let hex_string = hex::encode(hash);
8281
TokenValue::new(hex_string[..length.min(hex_string.len())].to_string())
8382
}
@@ -402,4 +401,38 @@ mod tests {
402401
// UUID 格式不包含 '.'
403402
assert!(!token.as_str().contains('.'));
404403
}
404+
405+
406+
#[test]
407+
fn test_random_32_length() {
408+
let config = SaTokenConfig {
409+
token_style: TokenStyle::Random32,
410+
..SaTokenConfig::default()
411+
};
412+
let token = TokenGenerator::generate_with_login_id(&config, "user_random");
413+
assert!(!token.as_str().is_empty());
414+
assert_eq!(token.as_str().len(), 32);
415+
}
416+
417+
#[test]
418+
fn test_random_64_length() {
419+
let config = SaTokenConfig {
420+
token_style: TokenStyle::Random64,
421+
..SaTokenConfig::default()
422+
};
423+
let token = TokenGenerator::generate_with_login_id(&config, "user_random");
424+
assert!(!token.as_str().is_empty());
425+
assert_eq!(token.as_str().len(), 64);
426+
}
427+
428+
#[test]
429+
fn test_random_128_length() {
430+
let config = SaTokenConfig {
431+
token_style: TokenStyle::Random128,
432+
..SaTokenConfig::default()
433+
};
434+
let token = TokenGenerator::generate_with_login_id(&config, "user_random");
435+
assert!(!token.as_str().is_empty());
436+
assert_eq!(token.as_str().len(), 128);
437+
}
405438
}

0 commit comments

Comments
 (0)