diff --git a/src/db.rs b/src/db.rs index 3739dd4..08d2c77 100644 --- a/src/db.rs +++ b/src/db.rs @@ -1,3 +1,4 @@ +use chrono::{Local, NaiveDateTime}; use serde::Serialize; use std::{fs, path::Path}; use welds::{connections::sqlite::SqliteClient, prelude::*}; @@ -87,11 +88,23 @@ impl Db { &self, token: &str, ) -> Result> { - let rows = Authorize::where_col(|p| p.token.equal(token)) + let row = Authorize::where_col(|p| p.token.equal(token)) .limit(1) .run(&self.client) - .await?; - Ok(!rows.is_empty()) + .await? + .into_iter() + .next(); + match row { + Some(a) => { + // 判断截止时间 + let expire_time = + NaiveDateTime::parse_from_str(&a.expire, "%Y-%m-%d %H:%M:%S")?; + let now_time = Local::now().naive_local(); + return Ok(now_time < expire_time); + } + // 如果没有找到,直接返回 false + None => return Ok(false), + }; } /// 查询 token 的详细信息,返回 Option 如果存在 diff --git a/src/main.rs b/src/main.rs index 6d4a176..3223181 100644 --- a/src/main.rs +++ b/src/main.rs @@ -98,8 +98,8 @@ async fn create_token( project: args.project.clone(), token: token.clone(), device_id: args.device_id.clone(), - expire: str_time, - insert_time: exp_time, + expire: exp_time, + insert_time: str_time, }) .await; @@ -120,9 +120,21 @@ async fn verify_token( Query(args): Query, ) -> (StatusCode, Json) { if state.db.verify_token(&args.token).await.unwrap() { - (StatusCode::OK, Json(VerifyResult { code: 200 })) + ( + StatusCode::OK, + Json(VerifyResult { + code: 200, + msg: "正常".to_owned(), + }), + ) } else { - (StatusCode::OK, Json(VerifyResult { code: 404 })) + ( + StatusCode::OK, + Json(VerifyResult { + code: 404, + msg: "token已过期".to_owned(), + }), + ) } } @@ -184,6 +196,7 @@ struct VerifyToken { #[derive(Serialize)] struct VerifyResult { code: i16, + msg: String, } #[derive(Serialize)]