AppendHeadersに中々辿り着けず、layerを堂々巡りした挙句、chromのcookieの設定などをミスって、これ作るのに丸2日かかりました。。。シクシク、泣きたい。
async fn handle_index()-> impl IntoResponse { let mut random = ChaCha8Rng::seed_from_u64(OsRng.next_u64()); let mut u128_pool = [0u8; 16]; random.fill_bytes(&mut u128_pool); let session_token = u128::from_le_bytes(u128_pool); println!("{:?}", &session_token); let tera = tera::Tera::new("templates/*").unwrap(); let mut context = tera::Context::new(); context.insert("title", "Index page"); let output = tera.render("index.html", &context); let cookie:String = format!("session_token={}; Max-Age=600", &session_token); let headers = AppendHeaders(vec![("Set-Cookie", cookie)]); (headers, axum::response::Html(output.unwrap())) }
psqlにセッションテーブルを作って、ログインしたタイミングでセッションテーブルにもsessionのvalueを保存するようにする。