rust actix 身份认证类库
rust 框架actix 提供了一个名为actix-identity的 类库,用于身份认证。
actix_identity
Actix Web 应用程序的自以为是的请求身份服务。
IdentityService中间件可以与不同的策略类型一起使用来存储身份信息。
提供了基于 cookie 的策略。CookieIdentityPolicy使用 cookie 作为身份存储。
要访问当前请求身份,请使用Identity提取器。
use actix_web::*;
use actix_identity::{Identity, CookieIdentityPolicy, IdentityService};
#[get("/")]
async fn index(id: Identity) -> String {
// access request identity
if let Some(id) = id.identity() {
format!("Welcome! {}", id)
} else {
"Welcome Anonymous!".to_owned()
}
}
#[post("/login")]
async fn login(id: Identity) -> HttpResponse {
// remember identity
id.remember("User1".to_owned());
HttpResponse::Ok().finish()
}
#[post("/logout")]
async fn logout(id: Identity) -> HttpResponse {
// remove identity
id.forget();
HttpResponse::Ok().finish()
}
HttpServer::new(move || {
// create cookie identity backend (inside closure, since policy is not Clone)
let policy = CookieIdentityPolicy::new(&[0; 32])
.name("auth-cookie")
.secure(false);
App::new()
// wrap policy into middleware identity middleware
.wrap(IdentityService::new(policy))
.service(services![index, login, logout])
})
详细介绍
用cookie存储凭证,然后注入一个中间件,具体的controller方法,附带一个名为id的对象,对象是identity结构。
里面有方法,让你能判断,是否鉴权过了。
同理,在登录的时候,我们应该把身份信息写进去。
至于具体的 登录代码,判断用户身份,这里就不表述了,你自己实现吧。
你学会了吗
分类: 默认 标签: 发布于: 2022-03-18 10:45:23, 更新于: 2022-03-18 10:45:23