Actix-extras - A collection of additional crates supporting the actix and actix-web frameworks.

Overview

actix-extras

A collection of additional crates supporting the actix-web and actix frameworks.

CI codecov Chat on Discord Dependency Status

Crates by @actix

Crate
actix-cors crates.io Documentation dependency status Cross-origin resource sharing (CORS) for actix-web applications.
actix-identity crates.io Documentation dependency status Identity service for actix-web framework.
actix-protobuf crates.io Documentation dependency status Protobuf support for actix-web framework.
actix-redis crates.io Documentation dependency status Redis integration for actix framework.
actix-session crates.io Documentation dependency status Session for actix-web framework.
actix-web-httpauth crates.io Documentation dependency status HTTP authentication schemes for actix-web.

Community Crates

These crates are provided by the community.

Crate
actix-form-data crates.io Documentation dependency status Rate-limiting backed by form-data.
actix-governor crates.io Documentation dependency status Rate-limiting backed by governor.
actix-limitation crates.io Documentation dependency status Rate-limiting using a fixed window counter for arbitrary keys, backed by Redis.
actix-casbin crates.io Documentation dependency status Authorization library that supports access control models like ACL, RBAC & ABAC.
actix-ip-filter crates.io Documentation dependency status IP address filter. Supports glob patterns.
actix-web-static-files crates.io Documentation dependency status Static files as embedded resources.
actix-web-grants crates.io Documentation dependency status Extension for validating user authorities.
aliri_actix crates.io Documentation dependency status Endpoint authorization and authentication using scoped OAuth2 JWT tokens.
actix-web-flash-messages crates.io Documentation dependency status Support for flash messages/one-time notifications in actix-web.

To add a crate to this list, submit a pull request.

Comments
  • Rework actix session

    Rework actix session

    PR Type

    Feature + Refactor

    PR Checklist

    • [x] Tests for the changes have been added / updated.
    • [x] Documentation comments have been added / updated.
    • [x] A changelog entry has been made for the appropriate packages.
    • [x] Format code with the latest stable rustfmt.

    Overview

    This PR introduces significant breaking changes for actix-session and actix-redis. For actix-redis:

    • RedisSession is removed to be moved into actix-session (renamed and reworked into RedisActorSessionStore).
    • Updated redis-async from 0.8 to 0.12.

    For actix-session, this is basically a rewrite. Key changes:

    • SessionMiddleware now requires to explicitly specify the storage backend for the session state. This makes sure that a storage backend is always present when SessionMiddleware it's used. Users no longer have to make sure to wrap the backend and the middleware in the right order.
    • We introduce a SessionStore trait to empower users to define their own custom storage backends for session state. All the logic associated with the session cookie is baked into SessionMiddleware, significantly reducing the amount of logic required to support a new backend - i.e. library authors just need to specify how to perform CRUD operations. This is a significant improvement with respect to the previous iteration of this crate - both CookieSession and RedisSession were previously re-implementing the same cookie-handling logic.
    • Three storage backends are implemented out of the box, behind features flags: RedisActorSessionStore, RedisSessionStore (with TLS support), CookieSessionStore.
    • Tightened the methods exposed on Session to prevent users from being able to corrupt the session state by setting fields to string values that are not valid JSON (i.e. set_session is now private).
    A-redis A-session B-semver-major 
    opened by LukeMathWalker 21
  • Let the validation function decide whether to continue or abort request

    Let the validation function decide whether to continue or abort request

    … processing based on the request, and the presence or absence of credentials.

    This is a breaking change compared to the current implementation The validation function is now defined as Fn(ServiceRequest, Option<T>) -> O instead of Fn(ServiceRequest, T) -> O. This allows to cater for cases where e.g. some routes don't require authentication, or some other application-specific authorization logic.

    Another approach could be to add a middleware setting to decide whether to abort the request if there is no credentials present in the request.

    opened by stiiifff 19
  • update actix dependencies to the latest betas

    update actix dependencies to the latest betas

    PR Type

    Update

    PR Checklist

    Check your PR fulfills the following:

    • [x] Tests for the changes have been added / updated.
    • [ ] Documentation comments have been added / updated.
    • [x] A changelog entry has been made for the appropriate packages.
    • [x] Format code with the latest stable rustfmt

    Overview

    The goal was to updated all dependencies to work with the latest actix-web beta and fix all the tests. There is one previews test failure in session::test::test_session_workflow which I did not fix.

    opened by DominicWrege 14
  • [actix-web-httpauth] Custom response body when Bearer token is missing?

    [actix-web-httpauth] Custom response body when Bearer token is missing?

    Hello!

    I was wondering if there is any support for body/JSON content when the Authorization: Bearer <token> header is missing. I have the following HttpAutentication when creating the server app:

    HttpServer::new(move || {
            let auth_validator = HttpAuthentication::bearer(jwt_validate);
            App::new()
                .wrap(Logger::default())
                .wrap(auth_validator)
                .service(responders::hello)
    }).bind("127.0.0.1:80")?.run().await?;
    

    The jwt_validate function is:

    async fn jwt_validate(req: ServiceRequest, credentials: BearerAuth) -> Result<ServiceRequest, Error> {
        if req.path().starts_with("/api/v1/auth") {
            return Ok(req)
        }
        let parsed = match auth::decode_token(credentials.token().into()) {
            Ok(val) => val,
            Err(err) => return Err(Error::from(err))
        };
        match auth::validate_jwt(parsed) {
            Ok(_val) => Ok(req),
            Err(err) => return Err(Error::from(err))
        }
    }
    

    This works fine (access is granted when the token is correct and access is denied when it's not), but when I don't use the header Authorization: Bearer <token> I just get a 401 Unauthorized code with an empty body. Is there a way of adding a custom JSON body to the 401 Unauthorized error response using actix-web-httpauth?

    Thanks in advance!

    A-httpauth 
    opened by PauMAVA 13
  • actix-session incompatible with the new v4 beta

    actix-session incompatible with the new v4 beta

    using actix-session like this

    .wrap(
        CookieSession::signed(&decode(env::var("APP_KEY").unwrap()).unwrap())
            .domain(env::var("APP_URL").unwrap())
            .name("queue_rs")
            .path("/")
            .secure(false),
    )
    

    results in

    error[E0277]: the trait bound `CookieSession: Transform<actix_web::app_service::AppRouting, ServiceRequest>` is not satisfied
       --> src/main.rs:268:17
        |
    268 | /                 CookieSession::signed(&decode(env::var("APP_KEY").unwrap()).unwrap())
    269 | |                     .domain(env::var("APP_URL").unwrap())
    270 | |                     .name("queue_rs")
    271 | |                     .path("/")
    272 | |                     .secure(false),
        | |__________________________________^ the trait `Transform<actix_web::app_service::AppRouting, ServiceRequest>` is not implemented for `CookieSession`
    

    deps: actix-web = "4.0.0-beta.1" actix-rt = "2.0.0-beta.1" actix-files = "0.6.0-beta.1" actix-session = "0.4.0"

    Also great job on the tokio upgrade, i see you guys have been working hard to get that upgraded.

    opened by MikeGlennFWC 12
  • Make it work with actix-web 4.0.0-beta.7

    Make it work with actix-web 4.0.0-beta.7

    PR Type

    Bug Fix

    PR Checklist

    Check your PR fulfills the following:

    • [x] Tests for the changes have been added / updated.
    • [x] Format code with the latest stable rustfmt

    Overview

    Make it work with latest beta of actix-web. ~~Requires https://github.com/actix/actix-web/pull/2168~~

    opened by andy128k 11
  • Update dependencies (Tokio 1.0)

    Update dependencies (Tokio 1.0)

    PR Type

    Refactor

    PR Checklist

    Check your PR fulfills the following:

    • [x] Format code with the latest stable rustfmt

    Overview

    Update dependencies to use crates with Tokio 1.0.

    opened by andy128k 11
  • fix: bad interaction between session state changes and renewal

    fix: bad interaction between session state changes and renewal

    PR Type

    Bug Fix

    PR Checklist

    • [x] Tests for the changes have been added / updated.
    • [x] Documentation comments have been added / updated.
    • [x] A changelog entry has been made for the appropriate packages.
    • [x] Format code with the nightly rustfmt (cargo +nightly fmt).

    Overview

    Closes #244

    A-session B-semver-patch 
    opened by Hulxv 10
  • Conflict between HttpAuthentication::bearer and actix-cors

    Conflict between HttpAuthentication::bearer and actix-cors

    Expected Behavior

    Be able to use HttpAuthentication::bearer and actix-cors in the same project

    Current Behavior

    Hi, I am trying to use HttpAuthentication::bearer in a project that also uses actix-cors, if I use HttpAuthentication::bearer or actix-cors alone it works fine, but if I use both I get an error saying that cors has block the request due to No 'Access-Control-Allow-Origin' header is present on the requested resource.

    Steps to Reproduce (for bugs)

    My code is:

    #[actix_rt::main]
    pub async fn init() -> std::io::Result<()> {
     let port = env::var("PORT").unwrap_or_else(|_e| "8000".to_string());
     let mut socket = "127.0.0.1".to_string();
     socket.push(':');
     socket = socket + &port;
     let db_state = db_mongodb::DB::init().await;
    
     HttpServer::new(move || {
        App::new()
            .wrap(
                Cors::permissive()
            )
            .data(db_state.clone())
            .service(
                web::scope("/api")
                .wrap(HttpAuthentication::bearer(auth::validator))
                .configure(routes::init_secured)
            )
            .service(
                web::scope("/public")
                .configure(routes::init_public)
            )
     })
     .bind(socket).unwrap()
     .run()
     .await
    }
    
    

    Your Environment

    • Rust Version: rustc 1.47.0 (18bf6b4f0 2020-10-07)
    • actix-web = "3.2.0"
    • actix-rt = "1.1.1"
    • actix-web-httpauth = "0.5.0"
    • actix-cors = "0.5.1"
    • Operating System: Debian GNU/Linux 10 (buster)
    • Kernel: Linux 4.19.0-12-amd64
    • Architecture: x86-64
    C-bug A-httpauth 
    opened by salfonseca 10
  • AuthenticationMiddleware was called already panic

    AuthenticationMiddleware was called already panic

    We are observing that our actix-web application occasionally panics under a lot of contention with the message "AuthenticationMiddleware was called already". This seems to come from here https://github.com/actix/actix-web-httpauth/blob/v0.4.0/src/middleware.rs#L184

    We have recently migrated to actix-web 2.0 and actix-web-httpauth 0.4. We haven't observed this before the migration.

    As this doesn't happen for all requests, there seems to be some race condition either within actix-web or actix-web-httpauth that causes this.

    We use bearer token authorization and within the validation function, to validate the token, we just perform an HTTP request with reqwest and depending on the result return Ok or Err.

    A-httpauth 
    opened by dneuhaeuser-zalando 10
  • actix_cors blocks requests that should be allowed

    actix_cors blocks requests that should be allowed

    Expected Behavior

    If I have app.example.com as a whitelisted Origin but both the backend + frontend is loaded from app2.example.com, request should be allowed.

    Current Behavior

    If I have app.example.com as a whitelisted Origin but both the backend + frontend is loaded from app2.example.com, requests are blocked, even though Host + Origin is the same. Browsers allow these requests to happen (no OPTIONS request sent, as Origin + Host is the same), but actix_cors decides to forcefully block the request.

    Relevant code from actix_cors:

    https://github.com/actix/actix-extras/blob/1561bda82268931edb070501413a46337ed71290/actix-cors/src/inner.rs#L73-L99

    Possible Solution

    actix_cors should not forcefully cancel/error on requests where Origin and Host is the same header. In fact, if there is no OPTIONS request, actix_cors should not care about the actual request at all, besides setting the right headers on the Response. As it stands today, actix_cors is trying to be overly protective of responses while it doesn't add anything regarding security.

    C-bug A-cors 
    opened by CapableWeb 8
  • Actix session insert should check for string

    Actix session insert should check for string

    Expected Behavior

    To not store a string as string wrapped in a string. (extra double quotes). Unsure if there's some magic I haven't seen to prevent this.

    https://github.com/actix/actix-extras/blob/master/actix-session/src/session.rs#L136-L147 We should check if the value is a string. If it's a string we should not use serde_json::to_string

    Current Behavior

    Using serde_json::to_string on everything including values of type string

    Possible Solution

    it seems there may have been uniformity reasons for not allowing types other than strings being stored, but I believe this makes the middleware less useful and more awkward.

    Steps to Reproduce (for bugs)

    1. using redis middleware insert a session value

    Context

    Double stringified strings result in all those values needing to be doubly unwrapped which is awkward. Would be nice to let users decide what kind of values they want to store and not wrap everything as string.

    Your Environment

    • Rust Version (I.e, output of rustc -V):
    • Actix-* crate(s) Version: Latest stable.
    opened by miketwenty1 0
  • Feature/session key

    Feature/session key

    PR Type

    INSERT_PR_TYPE: Code Style: Cargo.toml Feature: Session Key Extraction ability.

    PR Checklist

    • [ ] Tests for the changes have been added / updated.
    • [ ] Documentation comments have been added / updated.
    • [ ] A changelog entry has been made for the appropriate packages.
    • [ ] Format code with the nightly rustfmt (cargo +nightly fmt).

    Overview

    The goal is add this feature to be utilized by the redis session middleware without breaking any other session middleware.

    Notes from discussion: https://github.com/actix/actix-extras/issues/306

    Dev Notes: This is not a working PR, changes will come after feedback.

    opened by miketwenty1 0
  • Ability to extract SessionKey

    Ability to extract SessionKey

    Discussed in https://github.com/actix/actix-extras/discussions/305

    Originally posted by miketwenty1 December 4, 2022 Goal: Prevent 1 user from having multiple active sessions.

    I'm using actix-web redis session middleware.

    .wrap(SessionMiddleware::new(
        RedisActorSessionStore::new(redis_conn.clone()),
        secret_key.clone(),
    ))
    

    When a user does a login, I'll go ahead and insert some data into their session.

    session.insert("userid", id).expect("id inserted");
    

    Seemingly these key/values via the session.insert are inner key/values to the actual managed middleware session keys that are made automagically.

    First question: How can I extract this middleware session id key that redis uses for the inserts/sessions?

    My thought is I would go ahead and insert a the userid as a redis key with the value being the middleware redis session id so I could easily lookup and void any sessions that the user may have if logging in again. (seems hacky idk).

    Second question: Is there a much easier/cleaner way of doing this while still getting the nice managed sessions from the redis middleware?

    A-session C-feature 
    opened by robjtede 12
  • Allow testing created `Cors` instance

    Allow testing created `Cors` instance

    Creating a Cors middleware requires configuration in some cases. That needs testing.

    However, it is pretty hard to test a created Cors instance as it doesn't expose its values.

    Expected Behavior

    Be able to test a Cors instance for its values.

    Current Behavior

    Not possible. It is possible to render a debug string of the struct, however as it uses HashSet with RandomStates, instances containing HashSet values can't be tested.

    Possible Solution

    Have Cors implement PartialEq. Or allow access to the values of its Inner.

    Steps to Reproduce (for bugs)

    1. Set up a Cors instance
    2. Try to test it.

    Context

    Your Environment

    • Rust Version (I.e, output of rustc -V):
    • Actix-* crate(s) Version:
    opened by ctron 0
  • Feature: Add Sqlite session backend

    Feature: Add Sqlite session backend

    PR Type

    Feature

    PR Checklist

    • [x] Tests for the changes have been added / updated.
    • [x] Documentation comments have been added / updated.
    • [x] A changelog entry has been made for the appropriate packages.
    • [x] Format code with the nightly rustfmt (cargo +nightly fmt).

    Overview

    Implemented Sqlite session backend. The database/table will get created automatically if they don't exist.

    Default garbage collection of stale sessions happens through a database trigger. (it can be turned off and the trigger will be dropped, and garbage collection can be implemented outside if needed.)

    opened by bbogdan95 2
  • Feature: Add IdentityError to actix-identity crate.

    Feature: Add IdentityError to actix-identity crate.

    PR Type

    Feature

    PR Checklist

    • [x] Tests for the changes have been added / updated.
    • [x] Documentation comments have been added / updated.
    • [x] A changelog entry has been made for the appropriate packages.
    • [x] Format code with the nightly rustfmt (cargo +nightly fmt).

    Overview

    In order to let crates in the actix web ecosystem interact correctly with actix_web::Error, this commit introduces its own error type, replacing the previous usage of anyhow::Error.

    This will break any consumer code that depends on the presence of anyhow::Error, but in exchange it will allow more users of actix-identity to leverage its public API inside responders with less work.

    Closes #272

    A-identity B-semver-major 
    opened by esmevane 3
Releases(cors-v0.6.4)
  • cors-v0.6.4(Oct 30, 2022)

  • cors-v0.6.3(Sep 21, 2022)

    • Minimum supported Rust version (MSRV) is now 1.59 due to transitive time dependency.
    • Add Cors::block_on_origin_mismatch() option for controlling if requests are pre-emptively rejected. #286
    Source code(tar.gz)
    Source code(zip)
  • session-v0.7.2(Sep 11, 2022)

  • limitation-v0.4.0(Sep 10, 2022)

    • Add Builder::key_by for setting a custom rate limit key function.
    • Implement Default for RateLimiter.
    • RateLimiter is marked #[non_exhaustive]; use RateLimiter::default() instead.
    • In the middleware errors from the count function are matched and respond with INTERNAL_SERVER_ERROR if it's an unexpected error, instead of the default TOO_MANY_REQUESTS.
    • Minimum supported Rust version (MSRV) is now 1.59 due to transitive time dependency.
    Source code(tar.gz)
    Source code(zip)
  • protobuf-v0.9.0(Aug 24, 2022)

  • cors-v0.6.2(Aug 7, 2022)

  • settings-v0.6.0(Jul 31, 2022)

    • Update Actix Web dependencies to v4 ecosystem.
    • Rename actix.ssl settings object to actix.tls.
    • NoSettings is now marked #[non_exhaustive].
    Source code(tar.gz)
    Source code(zip)
  • session-v0.7.1(Jul 24, 2022)

  • httpauth-v0.8.0(Jul 21, 2022)

    • Removed AuthExtractor trait; implement FromRequest for your custom auth types. #264
    • BasicAuth::user_id() now returns &str. #249
    • BasicAuth::password() now returns Option<&str>. #249
    • Basic::user_id() now returns &str. #264
    • Basic::password() now returns Option<&str>. #264
    • Bearer::token() now returns &str. #264
    Source code(tar.gz)
    Source code(zip)
  • identity-v0.5.2(Jul 19, 2022)

  • httpauth-v0.7.0(Jul 19, 2022)

    • Auth validator functions now need to return (Error, ServiceRequest) in error cases. #260
    • Minimum supported Rust version (MSRV) is now 1.57 due to transitive time dependency.
    Source code(tar.gz)
    Source code(zip)
  • limitation-v0.3.0(Jul 11, 2022)

  • identity-v0.5.1(Jul 11, 2022)

  • identity-v0.5.0(Jul 11, 2022)

    actix-identity v0.5 is a complete rewrite. The goal is to streamline user experience and reduce maintenance overhead.

    actix-identity is now designed as an additional layer on top of actix-session v0.7, focused on identity management. The identity information is stored in the session state, which is managed by actix-session and can be stored using any of the supported SessionStore implementations. This reduces the surface area in actix-identity (e.g., it is no longer concerned with cookies!) and provides a smooth upgrade path for users: if you need to work with sessions, you no longer need to choose between actix-session and actix-identity; they work together now!

    actix-identity v0.5 has feature-parity with actix-identity v0.4; if you bump into any blocker when upgrading, please open an issue.

    Changes:

    • Minimum supported Rust version (MSRV) is now 1.57 due to transitive time dependency.

    • IdentityService, IdentityPolicy and CookieIdentityPolicy have been replaced by IdentityMiddleware. #246

    • Rename RequestIdentity trait to IdentityExt. #246

    • Trying to extract an Identity for an unauthenticated user will return a 401 Unauthorized response to the client. Extract an Option<Identity> or a Result<Identity, actix_web::Error> if you need to handle cases where requests may or may not be authenticated. #246

      Example:

      use actix_web::{http::header::LOCATION, get, HttpResponse, Responder};
      use actix_identity::Identity;
      
      #[get("/")]
      async fn index(user: Option<Identity>) -> impl Responder {
          if let Some(user) = user {
              HttpResponse::Ok().finish()
          } else {
              // Redirect to login page if unauthenticated
              HttpResponse::TemporaryRedirect()
                  .insert_header((LOCATION, "/login"))
                  .finish()
          }
      }
      
    Source code(tar.gz)
    Source code(zip)
  • session-v0.7.0(Jul 10, 2022)

    • Added TtlExtensionPolicy enum to support different strategies for extending the TTL attached to the session state. TtlExtensionPolicy::OnEveryRequest now allows for long-lived sessions that do not expire if the user remains active. #233
    • SessionLength is now called SessionLifecycle. #233
    • SessionLength::Predetermined is now called SessionLifecycle::PersistentSession. #233
    • The fields for Both SessionLength variants have been extracted into separate types (PersistentSession and BrowserSession). All fields are now private, manipulated via methods, to allow adding more configuration parameters in the future in a non-breaking fashion. #233
    • SessionLength::Predetermined::max_session_length is now called PersistentSession::session_ttl. #233
    • SessionLength::BrowserSession::state_ttl is now called BrowserSession::session_state_ttl. #233
    • SessionMiddlewareBuilder::max_session_length is now called SessionMiddlewareBuilder::session_lifecycle. #233
    • The SessionStore trait requires the implementation of a new method, SessionStore::update_ttl. #233
    • All types used to configure SessionMiddleware have been moved to the config sub-module. #233
    • Update actix dependency to 0.13.
    • Update actix-redis dependency to 0.12.
    • Minimum supported Rust version (MSRV) is now 1.57 due to transitive time dependency.
    Source code(tar.gz)
    Source code(zip)
  • redis-v0.12.0(Jul 9, 2022)

    • Update actix dependency to 0.13.
    • Update redis-async dependency to 0.13.
    • Update tokio-util dependency to 0.7.
    • Minimum supported Rust version (MSRV) is now 1.57 due to transitive time dependency.
    Source code(tar.gz)
    Source code(zip)
  • protobuf-v0.8.0(Jun 25, 2022)

  • session-v0.6.2(Mar 25, 2022)

    • Implement SessionExt for GuardContext. #234
    • RedisSessionStore will prevent connection timeouts from causing user-visible errors. #235
    • Do not leak internal implementation details to callers when errors occur. #236
    Source code(tar.gz)
    Source code(zip)
  • limitation-v0.2.0(Mar 22, 2022)

    • Update Actix Web dependency to v4 ecosystem. #229
    • Update Tokio dependencies to v1 ecosystem. #229
    • Rename Limiter::{build => builder}(). #232
    • Rename Builder::{finish => build}(). #232
    • Exceeding the rate limit now returns a 429 Too Many Requests response. #232
    Source code(tar.gz)
    Source code(zip)
  • session-v0.6.1(Mar 21, 2022)

  • session-v0.6.0(Mar 15, 2022)

    Added

    • SessionMiddleware, a middleware to provide support for saving/updating/deleting session state against a pluggable storage backend (see SessionStore trait) #212
    • CookieSessionStore, a cookie-based backend to store session state #212
    • RedisActorSessionStore, a Redis-based backend to store session state powered by actix-redis #212
    • RedisSessionStore, a Redis-based backend to store session state powered by redis-rs #212
    • Add TLS support for Redis via RedisSessionStore #212
    • Implement SessionExt for ServiceResponse #212

    Changed

    • Rename UserSession to SessionExt #212

    Removed

    • CookieSession has been removed in favour of CookieSessionStore, a storage backend for SessionMiddleware #212
    • Session::set_session has been removed. Use Session::insert to modify the session state. #212
    Source code(tar.gz)
    Source code(zip)
  • redis-v0.11.0(Mar 15, 2022)

    Removed

    • RedisSession has been removed. Check out RedisActorSessionStore in actix-session for a session store backed by Redis using actix-redis. #212

    Changed

    • Update redis-async dependency to 0.12. #212
    Source code(tar.gz)
    Source code(zip)
  • cors-v0.6.1(Mar 7, 2022)

  • session-v0.5.0(Mar 1, 2022)

  • redis-v0.10.0(Mar 1, 2022)

  • protobuf-v0.7.0(Mar 1, 2022)

  • identity-v0.4.0(Mar 1, 2022)

  • httpauth-v0.6.0(Mar 1, 2022)

  • cors-v0.6.0(Feb 25, 2022)

  • session-v0.5.0-beta.8(Feb 7, 2022)

Owner
Actix
Actix - web and actor frameworks for Rust
Actix
Static Web Server - a very small and fast production-ready web server suitable to serve static web files or assets

Static Web Server (or SWS abbreviated) is a very small and fast production-ready web server suitable to serve static web files or assets.

Jose Quintana 496 Jan 2, 2023
A starter template for actix-web projects that feels very Django-esque. Avoid the boring stuff and move faster.

Jelly A.K.A, the actix-web starter you probably wish you had. This is provided as-is, and anyone is free to extend it or rework it as they desire - ju

SecretKeys 198 Dec 15, 2022
Add Facebook and Google authentication to your HTTP REST API in Actix-web

I created this project while learning Rust. Project shows how to handle Facebook and Google token verification in Rust using Actix-Web. Hope this help

null 37 Dec 31, 2022
In-progress extractors and middleware for Actix Web

actix-web-lab Experimental extractors, middleware, and other extras for possible inclusion in Actix Web. Things To Know About This Crate It will never

Rob Ede 51 Dec 20, 2022
Extension for actix-web to validate user permissions

actix-web-grants Extension for actix-web to validate user permissions. To check user access to specific services, you can use built-in proc-macro, Per

Artem Medvedev 114 Dec 22, 2022
Easy to use multipart forms for actix-web

Actix Easy Multipart Easy to use Multipart Forms for actix-web. File uploads are written to disk as temporary files similar to the way the $_FILES var

Jacob Halsey 17 Jan 3, 2023
Example Blog using Rust, Actix Web, HTMX, Mustache

Actix Blog An example blog built with Actix. It uses htmx and handlebar templates. Running To run the blog, you need to have a recent version of Rust

Dru Jensen 2 Nov 11, 2022
Actix-web wrapper for garde, a Rust validation library.

Garde-actix-web   Actix-web wrapper for garde, a Rust validation library. Installation Usage example Feature flags About us Installation [dependencies

Netwo 5 Sep 8, 2023
Example Actix 2.x REST application implementing many features

Rust/Actix Example An Actix 2.0 REST server using the Rust language. Motivation Actix Web is a fast, powerful web framework for building web applicati

David D. 238 Dec 31, 2022
Basic Actix + Diesel + Postgres REST API

Actix-Crud Basic Actix + Diesel + Postgres REST API Setup Install and setup PostgreSQL Set DATABASE_URL environment variable or specify in .env file g

Aathif Naseer 4 Sep 23, 2022
Cookiecutter Rust Actix template for jumpstarting production-ready projects quickly.

Cookiecutter actix simple clean architecture This is a reusable Rust Cookiecutter template. The project is based on Actix web in combination with Dies

Microsoft 19 Feb 12, 2023
Fahrenheit-celsius converter using actix

fahrenheit-celsius-converter Simple http Fahrenheit/Celsius/Kelvin converter using actix-web. Note This is a toy project, not yet finished. It's not r

null 5 Nov 7, 2023
A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code. :zap::crab:

binserve ⚡ ?? A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code. ?? UPDATE: N

Mufeed VH 722 Dec 27, 2022
Simple and fast web server

see Overview Simple and fast web server as a single executable with no extra dependencies required. Features Built with Tokio and Hyper TLS encryption

null 174 Dec 9, 2022
A flexible web framework that promotes stability, safety, security and speed.

A flexible web framework that promotes stability, safety, security and speed. Features Stability focused. All releases target stable Rust. This will n

Gotham 2.1k Jan 3, 2023
Sincere is a micro web framework for Rust(stable) based on hyper and multithreading

The project is no longer maintained! Sincere Sincere is a micro web framework for Rust(stable) based on hyper and multithreading. Style like koa. The

null 94 Oct 26, 2022
Operator is a web server. You provide a directory and Operator serves it over HTTP.

Operator Operator is a web server. You provide a directory and Operator serves it over HTTP. It serves static files the way you'd expect, but it can a

Matt Kantor 6 Jun 6, 2022
Archibald is my attempt at learning Rust and writing a HTTP 1.1 web server.

Archibald To be a butler, is to be able to maintain an even-temper, at all times. One must have exceptional personal hygiene and look sharp and profes

Daniel Cuthbert 4 Jun 20, 2022
Salvo is a powerful and simplest web server framework in Rust world

Salvo is an extremely simple and powerful Rust web backend framework. Only basic Rust knowledge is required to develop backend services.

Salvo 1.2k Jan 5, 2023