zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use crate::prelude2::*;

use actix_session::Session;

pub async fn set_cookie(_request: HttpRequest, _session: Session) -> impl Responder {
    match _session.insert("greeting", "哈哈哈") {
        Ok(_) => {}
        Err(e) => {
            log::error!("session-insert: err={:?}", e)
        }
    }

    let ctx = tera::Context::new();

    _request.render(200, "developer/cookie/cookie_index.html", ctx)
    // HttpResponse::Ok().content_type("text/plain").body("Ok")
}

pub async fn read_cookie(request: HttpRequest, session: Session) -> impl Responder {
    let message = match session.get::<String>("greeting") {
        Ok(message) => match message {
            Some(message) => message,
            None => "N/a".to_string(),
        },
        Err(e) => {
            log::error!("session-read: err={:?}", e);
            "N/a".to_string()
        }
    };

    let mut ctx = tera::Context::new();
    ctx.insert("greeting", &message);

    request.render(200, "developer/cookie/cookie_read.html", ctx)
}

pub async fn set_cookie2(_request: HttpRequest, _session: Session) -> impl Responder {
    HttpResponse::Ok()
        .cookie(
            actix_web::cookie::Cookie::build("your_cookie_name", "your_cookie_value")
                // .domain("your_domain.com")  // 设置你的域名
                .path("/") // 设置 Cookie 路径
                .secure(false) // 使用 HTTPS
                .http_only(false) // 限制 JavaScript 访问
                .same_site(actix_web::cookie::SameSite::Lax) // 允许跨站点发送
                .finish(),
        )
        .content_type("text/plain")
        .body("Ok")
}

pub async fn read_cookie2(request: HttpRequest, _session: Session) -> impl Responder {
    let mut ctx = tera::Context::new();

    if let Some(cookie) = request.cookie("your_cookie_name") {
        ctx.insert("greeting", &cookie.value());
    } else {
        ctx.insert("greeting", "N/a");
    }

    request.render(200, "developer/cookie/cookie_read.html", ctx)
}