Actix-loginmanager
a simple loginmanager on actix web
Usage example
```
use actix_web::{
web, App, Either, Error, FromRequest, HttpRequest, HttpResponse, HttpServer, Responder,
};
use actix_loginmanager::{LoginManager,CookieSession,UserMinix,User};
use futures::{
future,
future::{ok, Ready},
Future,
};
[derive(Clone)]
struct User2{
id:i32,
name:&'static str
}
const users:[User2;3] = [
User2{id:1,name:"Tom"},
User2{id:2,name:"Jerry"},
User2{id:3,name:"Spike"},
];
impl UserMinix for User2 {
type Future = Ready
fn get_id(&self) -> i32 {
self.id
}
}
fn main() {
actixrt::System::new("loginmanager")
.blockon(async {
HttpServer::new(|| {
App::new()
.wrap(LoginManager::::new(
CookieSession::new(b"1231231231231231231231231231231231231231")
.secure(false),
))
.route(
"/",
web::get().to(|req: HttpRequest, user: User| {
if !user.isauthenticated(){
User::new(users[0].clone()).login(&req);
}else{
user.logout(&req);
return HttpResponse::Ok().body(format!("isauthenticated:{:?} current user:{:?}", user.isauthenticated(), user.user().unwrap().name));
};
HttpResponse::Ok().body(format!("isauthenticated:{:?} ", user.is_authenticated()))
}),
)
})
.bind("0.0.0.0:7081").unwrap()
.run()
.await
}).unwrap();
}
```