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を保存するようにする。