1 unstable release

0.0.1 Jan 19, 2020

#383 in #futures

MIT license

1.5MB
32K SLoC

Scrappy - the best web-framework for Rust

crates.io Build Status codecov

Purpose

The purpose of this library is to be your web framework for Rust.

The priorities are to provide an ergonomic, fast, safe, well-tested, and well-documented experience.

This is a hard fork of Actix-Web & Actix & all sub-packages


lib.rs:

Request identity service for scrappy applications.

IdentityService middleware can be used with different policies types to store identity information.

By default, only cookie identity policy is implemented. Other backend implementations can be added separately.

CookieIdentityPolicy uses cookies as identity storage.

To access current request identity Identity extractor should be used.

use scrappy::*;
use scrappy_identity::{Identity, CookieIdentityPolicy, IdentityService};

async fn index(id: Identity) -> String {
    // access request identity
    if let Some(id) = id.identity() {
        format!("Welcome! {}", id)
    } else {
        "Welcome Anonymous!".to_owned()
    }
}

async fn login(id: Identity) -> HttpResponse {
    id.remember("User1".to_owned()); // <- remember identity
    HttpResponse::Ok().finish()
}

async fn logout(id: Identity) -> HttpResponse {
    id.forget();                      // <- remove identity
    HttpResponse::Ok().finish()
}

fn main() {
    let app = App::new().wrap(IdentityService::new(
        // <- create identity middleware
        CookieIdentityPolicy::new(&[0; 32])    // <- create cookie identity policy
              .name("auth-cookie")
              .secure(false)))
        .service(web::resource("/index.html").to(index))
        .service(web::resource("/login.html").to(login))
        .service(web::resource("/logout.html").to(logout));
}

Dependencies

~27MB
~658K SLoC