casbin-rs / redis-cache

Shared redis cache for multiple CachedEnforcer instances

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CacheEnforcer and RedisCache

liergou99 opened this issue · comments

code:

#[async_std::main]
async fn main() -> () {
    ::std::env::set_var("RUST_LOG", "casbin=info");
    env_logger::init();

    let mut e = CachedEnforcer::new("examples/rbac_with_domains_model.conf",
                                    "examples/rbac_with_domains_policy.csv").await.unwrap();
    e.enable_log(true);
    let mut redis_cache: RedisCache<Vec<String>, bool> = RedisCache::new("redis://localhost:6379/1").unwrap();

    redis_cache.set(vec!["alice2".to_string(), "domain1".to_string(), "/data1".to_string(), "read".to_string()], true);

    e.set_cache(Box::new(redis_cache));
    let res1 = e.enforce(&["alice", "domain1", "data1", "read"]).unwrap();
    let res2 =e.enforce(&["alice2", "domain1", "data1", "read"]).unwrap();
    println!("{:?}",res1);
    println!("{:?}",res2);
}

Cargo.toml:

[dependencies]
casbin = { git = "https://github.com/casbin/casbin-rs", branch = "release-v2.0.0", default-features = false, features = ["runtime-async-std", "logging", "cached"] }
redis-cache = { git = "https://github.com/casbin-rs/redis-cache" }
async-std = { version = "1.5.0", features = ["attributes"] }
env_logger = "0.7.1"

Result:

      true
      false
      Aug 20 09:56:38.766 INFO Enforce Request, Response: true, Cached: false, Request: alice,domain1,data1,read
      Aug 20 09:56:38.773 INFO Enforce Request, Response: false, Cached: false, Request: alice2,domain1,data1,read
And there is no data in "rbac_with_domains_policy.csv" in redis, only the data written by me through "redis_cache.set(...)".It seems that "e.set_cache(Box::new(redis_cache));" did not work.

Issue-Label Bot is automatically applying the label feature_request to this issue, with a confidence of 0.79. Please mark this comment with 👍 or 👎 to give our bot feedback!

Links: app homepage, dashboard and code for this bot.