usecrate::auth::{Token,KEY};usecrate::module::{Claims,UserAuth};usejsonwebtoken::{encode,EncodingKey,Header};usestd::time::{SystemTime,UNIX_EPOCH};// get token
#[post("/token", format = "json", data = "<user_auth>")]pubasyncfnget_token(user_auth: Json<UserAuth>)-> Value{letuser=user_auth.into_inner();ifuser.id==0&&user.key.eq("oR66T*W8y4VaXkh#rTjeZ$$Rby$NCy!nJX"){lettimestamp=SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs();lettoken=matchencode(&Header::default(),&Claims{sub: String::from("!Yg43#xQtBE357js"),exp: timestamp+5,},&EncodingKey::from_secret(KEY),){Ok(t)=>t,Err(_)=>panic!(),};json!({"token": token})}else{json!({"token": "Auth Fail"})}}// get token test
#[get("/token/test")]pubasyncfnget_token_test(_auth: Token)-> Value{json!({"status":"Auth Success"})}
src\main.rs 增加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
modauth;#[launch]fnrocket()-> _{rocket::build()// database
.attach(MainDbConn::fairing()).mount("/",routes![index])// add api
.mount("/",routes![get_all_articles,get_article_by_id]).mount("/",routes![post_article,put_article]).mount("/",routes![delete_all_articles,delete_article])// token 本文新增的
.mount("/",routes![get_token,get_token_test])}