#web-framework #web #框架 #async #future #http

actori-identity

Actori Web框架的标识服务

1个不稳定版本

0.2.1 2020年1月20日

#627 in #web-framework

MIT/Apache

1MB
29K SLoC

Actori Web框架的标识服务 构建状态 codecov 加入gitter聊天 https://gitter.im/actori/actori

文档和社区资源


lib.rs:

请求Actori应用程序的标识服务。

IdentityService 中间件可以与不同策略类型一起使用来存储标识信息。

默认情况下,仅实现了cookie标识策略。其他后端实现可以单独添加。

CookieIdentityPolicy 使用cookie作为标识存储。

要访问当前请求的标识,应使用 Identity 提取器。

use actori_web::*;
use actori_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));
}

依赖关系

~33MB
~771K SLoC