1个不稳定版本

0.2.1-r12020年1月18日

#436 in #web-framework

MIT/Apache

1MB
29K SLoC

actix web框架的认证服务 构建状态 codecov 加入gitter聊天 https://gitter.im/actix/actix

文档和社区资源


lib.rs:

为Actix应用程序请求身份服务。

IdentityService 中间件可以使用不同的策略类型来存储身份信息。

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

CookieIdentityPolicy 使用cookie作为身份存储。

要访问当前请求身份 Identity 提取器应该被使用。

use requiem_web::*;
use requiem_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
~777K SLoC