mirror of
https://github.com/actix/actix-extras.git
synced 2025-06-26 02:19:22 +02:00
chore: remove actix-redis crate (#408)
This commit is contained in:
@ -2,6 +2,8 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Remove `redis-actor-session` crate feature (and, therefore, the `actix-redis` based storage backend).
|
||||
|
||||
## 0.9.0
|
||||
|
||||
- Remove use of `async-trait` on `SessionStore` trait.
|
||||
|
@ -20,7 +20,6 @@ all-features = true
|
||||
[features]
|
||||
default = []
|
||||
cookie-session = []
|
||||
redis-actor-session = ["actix-redis", "actix", "futures-core", "rand"]
|
||||
redis-rs-session = ["redis", "rand"]
|
||||
redis-rs-tls-session = ["redis-rs-session", "redis/tokio-native-tls-comp"]
|
||||
|
||||
@ -36,16 +35,11 @@ serde = { version = "1" }
|
||||
serde_json = { version = "1" }
|
||||
tracing = { version = "0.1.30", default-features = false, features = ["log"] }
|
||||
|
||||
# redis-actor-session
|
||||
actix = { version = "0.13", default-features = false, optional = true }
|
||||
actix-redis = { version = "0.12", optional = true }
|
||||
futures-core = { version = "0.3.17", optional = true }
|
||||
|
||||
# redis-rs-session
|
||||
redis = { version = "0.24", default-features = false, features = ["tokio-comp", "connection-manager"], optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
actix-session = { path = ".", features = ["cookie-session", "redis-actor-session", "redis-rs-session"] }
|
||||
actix-session = { path = ".", features = ["cookie-session", "redis-rs-session"] }
|
||||
actix-test = "0.1.0-beta.10"
|
||||
actix-web = { version = "4", default-features = false, features = ["cookies", "secure-cookies", "macros"] }
|
||||
env_logger = "0.11"
|
||||
@ -53,8 +47,8 @@ log = "0.4"
|
||||
|
||||
[[example]]
|
||||
name = "basic"
|
||||
required-features = ["redis-actor-session"]
|
||||
required-features = ["redis-rs-session"]
|
||||
|
||||
[[example]]
|
||||
name = "authentication"
|
||||
required-features = ["redis-actor-session"]
|
||||
required-features = ["redis-rs-session"]
|
||||
|
@ -100,14 +100,6 @@ By default, `actix-session` does not provide any storage backend to retrieve and
|
||||
actix-session = { version = "...", features = ["cookie-session"] }
|
||||
```
|
||||
|
||||
- a Redis-based backend via [`actix-redis`](https://docs.rs/actix-redis), [`RedisActorSessionStore`], using the `redis-actor-session` feature flag.
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
# ...
|
||||
actix-session = { version = "...", features = ["redis-actor-session"] }
|
||||
```
|
||||
|
||||
- a Redis-based backend via [`redis-rs`](https://docs.rs/redis-rs), [`RedisSessionStore`], using the `redis-rs-session` feature flag.
|
||||
|
||||
```toml
|
||||
|
@ -1,4 +1,4 @@
|
||||
use actix_session::{storage::RedisActorSessionStore, Session, SessionMiddleware};
|
||||
use actix_session::{storage::RedisSessionStore, Session, SessionMiddleware};
|
||||
use actix_web::{
|
||||
cookie::{Key, SameSite},
|
||||
error::InternalError,
|
||||
@ -76,6 +76,9 @@ async fn main() -> std::io::Result<()> {
|
||||
// The signing key would usually be read from a configuration file/environment variables.
|
||||
let signing_key = Key::generate();
|
||||
|
||||
log::info!("setting up Redis session storage");
|
||||
let storage = RedisSessionStore::new("127.0.0.1:6379").await.unwrap();
|
||||
|
||||
log::info!("starting HTTP server at http://localhost:8080");
|
||||
|
||||
HttpServer::new(move || {
|
||||
@ -84,15 +87,12 @@ async fn main() -> std::io::Result<()> {
|
||||
.wrap(middleware::Logger::default())
|
||||
// cookie session middleware
|
||||
.wrap(
|
||||
SessionMiddleware::builder(
|
||||
RedisActorSessionStore::new("127.0.0.1:6379"),
|
||||
signing_key.clone(),
|
||||
)
|
||||
// allow the cookie to be accessed from javascript
|
||||
.cookie_http_only(false)
|
||||
// allow the cookie only from the current domain
|
||||
.cookie_same_site(SameSite::Strict)
|
||||
.build(),
|
||||
SessionMiddleware::builder(storage.clone(), signing_key.clone())
|
||||
// allow the cookie to be accessed from javascript
|
||||
.cookie_http_only(false)
|
||||
// allow the cookie only from the current domain
|
||||
.cookie_same_site(SameSite::Strict)
|
||||
.build(),
|
||||
)
|
||||
.route("/login", web::post().to(login))
|
||||
.route("/secret", web::get().to(secret))
|
||||
|
@ -1,4 +1,4 @@
|
||||
use actix_session::{storage::RedisActorSessionStore, Session, SessionMiddleware};
|
||||
use actix_session::{storage::RedisSessionStore, Session, SessionMiddleware};
|
||||
use actix_web::{cookie::Key, middleware, web, App, Error, HttpRequest, HttpServer, Responder};
|
||||
|
||||
/// simple handler
|
||||
@ -23,6 +23,9 @@ async fn main() -> std::io::Result<()> {
|
||||
// The signing key would usually be read from a configuration file/environment variables.
|
||||
let signing_key = Key::generate();
|
||||
|
||||
log::info!("setting up Redis session storage");
|
||||
let storage = RedisSessionStore::new("127.0.0.1:6379").await.unwrap();
|
||||
|
||||
log::info!("starting HTTP server at http://localhost:8080");
|
||||
|
||||
HttpServer::new(move || {
|
||||
@ -30,10 +33,7 @@ async fn main() -> std::io::Result<()> {
|
||||
// enable logger
|
||||
.wrap(middleware::Logger::default())
|
||||
// cookie session middleware
|
||||
.wrap(SessionMiddleware::new(
|
||||
RedisActorSessionStore::new("127.0.0.1:6379"),
|
||||
signing_key.clone(),
|
||||
))
|
||||
.wrap(SessionMiddleware::new(storage.clone(), signing_key.clone()))
|
||||
// register simple route, handle all methods
|
||||
.service(web::resource("/").to(index))
|
||||
})
|
||||
|
@ -106,15 +106,6 @@ attached to your sessions. You can enable:
|
||||
actix-session = { version = "...", features = ["cookie-session"] }
|
||||
```
|
||||
|
||||
- a Redis-based backend via [`actix-redis`](https://docs.rs/actix-redis),
|
||||
[`RedisActorSessionStore`], using the `redis-actor-session` feature flag.
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
# ...
|
||||
actix-session = { version = "...", features = ["redis-actor-session"] }
|
||||
```
|
||||
|
||||
- a Redis-based backend via [`redis-rs`](https://docs.rs/redis-rs), [`RedisSessionStore`], using
|
||||
the `redis-rs-session` feature flag.
|
||||
|
||||
|
@ -47,7 +47,7 @@ use crate::{
|
||||
/// # Examples
|
||||
/// ```no_run
|
||||
/// use actix_web::{web, App, HttpServer, HttpResponse, Error};
|
||||
/// use actix_session::{Session, SessionMiddleware, storage::RedisActorSessionStore};
|
||||
/// use actix_session::{Session, SessionMiddleware, storage::RedisSessionStore};
|
||||
/// use actix_web::cookie::Key;
|
||||
///
|
||||
/// // The secret key would usually be read from a configuration file/environment variables.
|
||||
@ -59,20 +59,20 @@ use crate::{
|
||||
/// #[actix_web::main]
|
||||
/// async fn main() -> std::io::Result<()> {
|
||||
/// let secret_key = get_secret_key();
|
||||
/// let redis_connection_string = "127.0.0.1:6379";
|
||||
/// HttpServer::new(move ||
|
||||
/// App::new()
|
||||
/// // Add session management to your application using Redis for session state storage
|
||||
/// .wrap(
|
||||
/// SessionMiddleware::new(
|
||||
/// RedisActorSessionStore::new(redis_connection_string),
|
||||
/// secret_key.clone()
|
||||
/// )
|
||||
/// )
|
||||
/// .default_service(web::to(|| HttpResponse::Ok())))
|
||||
/// .bind(("127.0.0.1", 8080))?
|
||||
/// .run()
|
||||
/// .await
|
||||
/// let storage = RedisSessionStore::new("127.0.0.1:6379").await.unwrap();
|
||||
///
|
||||
/// HttpServer::new(move || {
|
||||
/// App::new()
|
||||
/// // Add session management to your application using Redis as storage
|
||||
/// .wrap(SessionMiddleware::new(
|
||||
/// storage.clone(),
|
||||
/// secret_key.clone(),
|
||||
/// ))
|
||||
/// .default_service(web::to(|| HttpResponse::Ok()))
|
||||
/// })
|
||||
/// .bind(("127.0.0.1", 8080))?
|
||||
/// .run()
|
||||
/// .await
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
@ -80,7 +80,7 @@ use crate::{
|
||||
///
|
||||
/// ```no_run
|
||||
/// use actix_web::{App, cookie::{Key, time}, Error, HttpResponse, HttpServer, web};
|
||||
/// use actix_session::{Session, SessionMiddleware, storage::RedisActorSessionStore};
|
||||
/// use actix_session::{Session, SessionMiddleware, storage::RedisSessionStore};
|
||||
/// use actix_session::config::PersistentSession;
|
||||
///
|
||||
/// // The secret key would usually be read from a configuration file/environment variables.
|
||||
@ -92,25 +92,23 @@ use crate::{
|
||||
/// #[actix_web::main]
|
||||
/// async fn main() -> std::io::Result<()> {
|
||||
/// let secret_key = get_secret_key();
|
||||
/// let redis_connection_string = "127.0.0.1:6379";
|
||||
/// HttpServer::new(move ||
|
||||
/// App::new()
|
||||
/// let storage = RedisSessionStore::new("127.0.0.1:6379").await.unwrap();
|
||||
///
|
||||
/// HttpServer::new(move || {
|
||||
/// App::new()
|
||||
/// // Customise session length!
|
||||
/// .wrap(
|
||||
/// SessionMiddleware::builder(
|
||||
/// RedisActorSessionStore::new(redis_connection_string),
|
||||
/// secret_key.clone()
|
||||
/// )
|
||||
/// .session_lifecycle(
|
||||
/// PersistentSession::default()
|
||||
/// .session_ttl(time::Duration::days(5))
|
||||
/// )
|
||||
/// .build(),
|
||||
/// SessionMiddleware::builder(storage.clone(), secret_key.clone())
|
||||
/// .session_lifecycle(
|
||||
/// PersistentSession::default().session_ttl(time::Duration::days(5)),
|
||||
/// )
|
||||
/// .build(),
|
||||
/// )
|
||||
/// .default_service(web::to(|| HttpResponse::Ok())))
|
||||
/// .bind(("127.0.0.1", 8080))?
|
||||
/// .run()
|
||||
/// .await
|
||||
/// .default_service(web::to(|| HttpResponse::Ok()))
|
||||
/// })
|
||||
/// .bind(("127.0.0.1", 8080))?
|
||||
/// .run()
|
||||
/// .await
|
||||
/// }
|
||||
/// ```
|
||||
#[derive(Clone)]
|
||||
|
@ -11,18 +11,13 @@ pub use self::{
|
||||
#[cfg(feature = "cookie-session")]
|
||||
mod cookie;
|
||||
|
||||
#[cfg(feature = "redis-actor-session")]
|
||||
mod redis_actor;
|
||||
|
||||
#[cfg(feature = "redis-rs-session")]
|
||||
mod redis_rs;
|
||||
|
||||
#[cfg(any(feature = "redis-actor-session", feature = "redis-rs-session"))]
|
||||
#[cfg(feature = "redis-rs-session")]
|
||||
mod utils;
|
||||
|
||||
#[cfg(feature = "cookie-session")]
|
||||
pub use cookie::CookieSessionStore;
|
||||
#[cfg(feature = "redis-actor-session")]
|
||||
pub use redis_actor::{RedisActorSessionStore, RedisActorSessionStoreBuilder};
|
||||
#[cfg(feature = "redis-rs-session")]
|
||||
pub use redis_rs::{RedisSessionStore, RedisSessionStoreBuilder};
|
||||
|
@ -120,9 +120,7 @@ impl RedisSessionStoreBuilder {
|
||||
self
|
||||
}
|
||||
|
||||
/// Finalise the builder and return a [`RedisActorSessionStore`] instance.
|
||||
///
|
||||
/// [`RedisActorSessionStore`]: crate::storage::RedisActorSessionStore
|
||||
/// Finalise the builder and return a [`RedisSessionStore`] instance.
|
||||
pub async fn build(self) -> Result<RedisSessionStore, anyhow::Error> {
|
||||
let client = ConnectionManager::new(redis::Client::open(self.connection_string)?).await?;
|
||||
Ok(RedisSessionStore {
|
||||
|
Reference in New Issue
Block a user