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 服务器
15KB
184 行
actix-session-surrealdb
一个用于 actix-session 的库,它实现了 SurrealDB 的 SessionStore
特性。
这不是 actix
的官方库!
支持
这个库是为我的一个项目构建的,因此它只针对我的特定用例进行了测试。我将尝试支持其他用例,所以如果您遇到错误,请提交 Issues,但这更多的是一种“尽力而为”的支持,而不是全面的。
这个库没有经过很好的测试,所以请自行承担风险。您可能也不应该在生产中使用它,但我不掌管您,所以您愿意怎么做就怎么做。
最小支持的 Rust 版本 (MSRV): 1.75
示例用法
您可以使用 SurrealSessionStore
类似于 CookieSessionStore
或 RedisSessionStore
,但您首先需要连接并检查您的数据库
#[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