8个版本
0.3.8 | 2022年5月12日 |
---|---|
0.3.2 | 2022年4月12日 |
0.3.1 | 2022年2月9日 |
0.2.5 | 2022年2月8日 |
0.1.5 |
|
#1037 在 数据库接口
每月55次下载
33KB
639 行
sea orm casbin adapter
更新
1. the version 3.0 is enabled only `logging` freatrue .
2. you can use any run_time to run the adapter. but same with the sea-orm's run_time.
[dependencies]
sea_orm_casbin_adapter = {version = "0.3", features = ["mysql", "runtime-tokio-native-tls"]}
sea-orm = {version = "0.6.0", default-features = false, features = ["sqlx-mysql", "macros", "runtime-tokio-native-tls"]}
或
[dependencies]
sea_orm_casbin_adapter = {version = "0.3", features = ["mysql", "runtime-tokio-native-tls"]}
[dependencies.sea-orm]
default-features = false
features = ["macros", "runtime-tokio-native-tls"]
version = "0.6.0"
[features]
default = ["postgres", "mysql"]
mysql = ["sea-orm/sqlx-mysql"]
postgres = ["sea-orm/sqlx-postgres"]
sqlite = ["sea-orm/sqlx-sqlite"]
简介
sea-orm-casbin-adapter是sea-orm的casbin适配器。
就像sqx-adapter一样,它可以在sea-orm中使用。
测试
...
一个与sea-orm配合使用的适配器。它仅在Mysql、Postgresql上进行了测试,可能不支持Sqlite3。
使用方法<使用方法>
- 添加依赖
[dependencies]
sea_orm_casbin_adapter = "*"
tokio = "*"
- 添加casbin模型策略文件
- 将代码添加到您的代码中
use sea_orm_casbin_adapter::{casbin::prelude::*, SeaOrmAdapter};
#[tokio::main]
async fn main() -> Result<()> {
let m = DefaultModel::from_file("config/casbin_conf/rbac_model.conf")
.await
.unwrap();
// mysql://root:[email protected]:13306/wk
// postgres://postgres:[email protected]:25432/wk
let db = SeaOrmAdapter::new("postgres://postgres:[email protected]:25432/wk")
.await
.expect("open db error");
let mut e = Enforcer::new(m, db).await?;
e.enable_log(true);
e.add_named_policy(
"g",
vec![
"data9_admin".to_string(),
"data9".to_string(),
"write".to_string(),
],
)
.await
.unwrap();
e.add_policy(
vec![
"dataxx_admin".to_string(),
"dataxx".to_string(),
"write".to_string(),
],
)
.await
.unwrap();
e.add_policies(vec![
vec![
"data1_admin".to_string(),
"data4".to_string(),
"write".to_string(),
],
vec![
"data3_admin".to_string(),
"data5".to_string(),
"write".to_string(),
],
])
.await
.unwrap();
// e.remove_policies(vec![
// vec![
// "data6_admin".to_string(),
// "data4".to_string(),
// "write".to_string(),
// ],
// vec![
// "data6_admin".to_string(),
// "data5".to_string(),
// "write".to_string(),
// ],
// ])
// .await
// .unwrap();
println!("C===============");
e.enforce(("data2_admin", "data2", "write"))?;
println!("D===============");
println!("e===============");
Ok(())
}
支持直接传入数据库连接
let m = DefaultModel::from_file("config/casbin_conf/rbac_model.conf")
.await
.unwrap();
let pool: DatabaseConnection = Database::connect("protocol://username:password@host/database").await?;
let adpt = SeaOrmAdapter::new_with_pool(pool).await.unwrap();
let mut e = Enforcer::new(m, adpt).await?;
e.enforce(("data2_admin", "data2", "write"))?;
依赖项
~14–38MB
~593K SLoC