#surrealdb #session #actix-web #web #async #actix

actix-session-surrealdb

SurrealDB 会话存储库,用于 actix-session

9 个版本

0.1.8 2024年1月12日
0.1.7 2023年10月9日
0.1.5 2023年8月12日
0.1.3 2023年5月27日

#311 in HTTP 服务器

MIT 许可证

15KB
184

actix-session-surrealdb

一个用于 actix-session 的库,它实现了 SurrealDBSessionStore 特性。

这不是 actix 的官方库!

支持

这个库是为我的一个项目构建的,因此它只针对我的特定用例进行了测试。我将尝试支持其他用例,所以如果您遇到错误,请提交 Issues,但这更多的是一种“尽力而为”的支持,而不是全面的。

这个库没有经过很好的测试,所以请自行承担风险。您可能也不应该在生产中使用它,但我不掌管您,所以您愿意怎么做就怎么做。

最小支持的 Rust 版本 (MSRV): 1.75

示例用法

您可以使用 SurrealSessionStore 类似于 CookieSessionStoreRedisSessionStore,但您首先需要连接并检查您的数据库

#[actix_web::main]
async fn main() -> io::Result<()> {
    let db = Surreal::new<Ws>("127.0.0.1:8000").await.unwrap();

    db.signin({
        user: "root",
        pass: "root",
    }).await.unwrap();
    
    db.use_ns("test").use_db("test").await.unwrap();

    let session_store = SurrealSessionStore::from_connection(db, "sessions");

    let key = Key::generate();

    HttpServer::new(move || {
        App::new()
            .wrap(
                SessionMiddleware::builder(session_store.clone(), key.clone())
                   .cookie_same_site(actix_web::cookie::SameSite::None)
                   .cookie_secure(true)
                   .cookie_http_only(true)
                   .session_lifecycle(
                        PersistentSession::default()
                            .session_ttl_policy(actix_session::config::TtlExtensionPolicy::OnStateChanges)
                            .session_ttl(Duration::days(7)),
                   )
                   .build()
            )
    })
    .bind(("127.0.0.1", "8080"))?
    .run()
    .await
}

许可证

本项目采用 MIT 许可证,可在 此处 找到。

依赖关系

~67MB
~1.5M SLoC