Skip to content

Commit dbfc31c

Browse files
authored
feat: add DistributedEnforcer auto-configuration via useDistributedEnforcer (#102)
1 parent aef3b87 commit dbfc31c

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ casbin:
5252
enableCasbin: true
5353
#Whether to use thread-synchronized Enforcer, default false
5454
useSyncedEnforcer: false
55+
#Whether to use distributed Enforcer, default false.
56+
#If both useSyncedEnforcer and useDistributedEnforcer are set to true, useDistributedEnforcer will take effect.
57+
useDistributedEnforcer: false
5558
#Whether to enable automatic policy saving, if the adapter supports this function, it is enabled by default.
5659
autoSave: true
5760
#Storage type [file, jdbc], currently supported jdbc database [mysql (mariadb), h2, oracle, postgresql, db2]

src/main/java/org/casbin/spring/boot/autoconfigure/CasbinAutoConfiguration.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.casbin.annotation.CasbinDataSource;
55
import org.casbin.exception.CasbinAdapterException;
66
import org.casbin.exception.CasbinModelConfigNotFoundException;
7+
import org.casbin.jcasbin.main.DistributedEnforcer;
78
import org.casbin.jcasbin.main.Enforcer;
89
import org.casbin.jcasbin.main.SyncedEnforcer;
910
import org.casbin.jcasbin.model.Model;
@@ -147,7 +148,10 @@ public Enforcer enforcer(CasbinProperties properties, Adapter adapter) {
147148
model.addDef("m", "m", "g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act");
148149
}
149150
Enforcer enforcer;
150-
if (properties.isUseSyncedEnforcer()) {
151+
if (properties.isUseDistributedEnforcer()) {
152+
enforcer = new DistributedEnforcer(model, adapter);
153+
logger.info("Casbin use DistributedEnforcer");
154+
} else if (properties.isUseSyncedEnforcer()) {
151155
enforcer = new SyncedEnforcer(model, adapter);
152156
logger.info("Casbin use SyncedEnforcer");
153157
} else {

src/main/java/org/casbin/spring/boot/autoconfigure/properties/CasbinProperties.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public class CasbinProperties {
2929
* Whether to use a synchronized Enforcer
3030
*/
3131
private boolean useSyncedEnforcer = false;
32+
/**
33+
* Whether to use a distributed Enforcer
34+
*/
35+
private boolean useDistributedEnforcer = false;
3236
/**
3337
* Local model file
3438
*/
@@ -111,6 +115,14 @@ public void setUseSyncedEnforcer(boolean useSyncedEnforcer) {
111115
this.useSyncedEnforcer = useSyncedEnforcer;
112116
}
113117

118+
public boolean isUseDistributedEnforcer() {
119+
return useDistributedEnforcer;
120+
}
121+
122+
public void setUseDistributedEnforcer(boolean useDistributedEnforcer) {
123+
this.useDistributedEnforcer = useDistributedEnforcer;
124+
}
125+
114126
public String getModel() {
115127
return model;
116128
}

0 commit comments

Comments
 (0)