登录接口 JWT 有效期调整为 7 天,sub 改为 user_id
This commit is contained in:
@@ -91,8 +91,8 @@ async fn login_handler(
|
||||
info!("Login attempt for user: {}", payload.username);
|
||||
|
||||
// 查询用户账号与密码
|
||||
let user: Option<(String,)> = sqlx::query_as(
|
||||
"SELECT p.password \
|
||||
let user: Option<(uuid::Uuid, String)> = sqlx::query_as(
|
||||
"SELECT a.user_id, p.password \
|
||||
FROM user_login_account a \
|
||||
JOIN user_login_password p ON a.user_id = p.user_id \
|
||||
WHERE a.account = $1 AND a.deleted = FALSE AND p.deleted = FALSE"
|
||||
@@ -103,7 +103,7 @@ async fn login_handler(
|
||||
.unwrap_or(None);
|
||||
|
||||
match user {
|
||||
Some((password_hash,)) => {
|
||||
Some((user_id, password_hash)) => {
|
||||
// 验证密码
|
||||
tracing::debug!("Verifying password: input_len={}, hash_len={}", payload.password.len(), password_hash.len());
|
||||
match verify(&payload.password, &password_hash) {
|
||||
@@ -111,7 +111,7 @@ async fn login_handler(
|
||||
info!("User {} logged in successfully", payload.username);
|
||||
|
||||
// 生成 JWT
|
||||
let token = generate_token(&payload.username, &state.jwt_secret);
|
||||
let token = generate_token(&user_id.to_string(), &state.jwt_secret);
|
||||
|
||||
(
|
||||
StatusCode::OK,
|
||||
@@ -166,12 +166,12 @@ async fn health_handler() -> &'static str {
|
||||
}
|
||||
|
||||
// 生成 JWT Token
|
||||
fn generate_token(username: &str, secret: &str) -> String {
|
||||
fn generate_token(sub: &str, secret: &str) -> String {
|
||||
let now = Utc::now();
|
||||
let exp = now + Duration::hours(24);
|
||||
let exp = now + Duration::days(7);
|
||||
|
||||
let claims = Claims {
|
||||
sub: username.to_string(),
|
||||
sub: sub.to_string(),
|
||||
iat: now.timestamp() as usize,
|
||||
exp: exp.timestamp() as usize,
|
||||
};
|
||||
|
||||
@@ -91,8 +91,8 @@ async fn login_handler(
|
||||
info!("Login attempt for email: {}", payload.email);
|
||||
|
||||
// 查询用户邮箱与密码
|
||||
let user: Option<(String,)> = sqlx::query_as(
|
||||
"SELECT p.password \
|
||||
let user: Option<(uuid::Uuid, String)> = sqlx::query_as(
|
||||
"SELECT e.user_id, p.password \
|
||||
FROM user_login_email e \
|
||||
JOIN user_login_password p ON e.user_id = p.user_id \
|
||||
WHERE e.email = $1 AND e.deleted = FALSE AND p.deleted = FALSE"
|
||||
@@ -103,7 +103,7 @@ async fn login_handler(
|
||||
.unwrap_or(None);
|
||||
|
||||
match user {
|
||||
Some((password_hash,)) => {
|
||||
Some((user_id, password_hash)) => {
|
||||
// 验证密码
|
||||
tracing::debug!("Verifying password: input_len={}, hash_len={}", payload.password.len(), password_hash.len());
|
||||
match verify(&payload.password, &password_hash) {
|
||||
@@ -111,7 +111,7 @@ async fn login_handler(
|
||||
info!("Email {} logged in successfully", payload.email);
|
||||
|
||||
// 生成 JWT
|
||||
let token = generate_token(&payload.email, &state.jwt_secret);
|
||||
let token = generate_token(&user_id.to_string(), &state.jwt_secret);
|
||||
|
||||
(
|
||||
StatusCode::OK,
|
||||
@@ -166,12 +166,12 @@ async fn health_handler() -> &'static str {
|
||||
}
|
||||
|
||||
// 生成 JWT Token
|
||||
fn generate_token(email: &str, secret: &str) -> String {
|
||||
fn generate_token(sub: &str, secret: &str) -> String {
|
||||
let now = Utc::now();
|
||||
let exp = now + Duration::hours(24);
|
||||
let exp = now + Duration::days(7);
|
||||
|
||||
let claims = Claims {
|
||||
sub: email.to_string(),
|
||||
sub: sub.to_string(),
|
||||
iat: now.timestamp() as usize,
|
||||
exp: exp.timestamp() as usize,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user