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.

Stop spamming the issues.