rust
rocket_casbin_auth = "0.1.1"
According to Rocket Fairing Guide, we need to use Fairing trait for authentication or authorization with casbin.
So you need to implement CasbinMiddleware
and Fairing
first.
```rust
pub struct CasbinFairing {
enforcer: Arc
impl CasbinFairing {
pub fn new
impl CasbinMiddleware for CasbinFairing {
fn getcasbinvals<'a>(&self, req: &Request<'>) -> Vec
fn get_cached_enforcer(&self) -> Arc<RwLock<CachedEnforcer>> {
self.enforcer.clone()
}
}
impl Fairing for CasbinFairing { fn info(&self) -> Info { Info { name: "Casbin Fairing", kind: Kind::Request, } }
fn on_request(&self, req: &mut Request<'r>, _: &Data) {
self.enforce(req);
}
} ```
and then, attach fairing to rocket.
rust
rocket::ignite()
.attach(CasbinFairing::new("examples/model.conf", "examples/role_policy.csv"))
finish, add guard to your route
```rust
pub fn book(_g: CasbinGuard) -> &'static str { "book" } ```