casbin / jcasbin

An authorization library that supports access control models like ACL, RBAC, ABAC in Java
https://casbin.org
Apache License 2.0
2.38k stars 461 forks source link

get 'define class error' for first enforcement #345

Closed lissali closed 1 year ago

lissali commented 1 year ago

this is my model:

m.addDef("r", "r", "sub, dom, obj, act"); m.addDef("p", "p", "sub, dom, obj, act"); m.addDef("g", "g", ", , _"); m.addDef("e", "e", "some(where (p.eft == allow))"); m.addDef("m", "m", "g(r.sub, p.sub, r.dom) && keyMatch(r.dom, p.dom) && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act)");

when try to enforce for the first time, get the error : define class error

com.googlecode.aviator.exception.CompileExpressionErrorException: define class error at com.googlecode.aviator.code.asm.ASMCodeGenerator.getResult(ASMCodeGenerator.java:819) at com.googlecode.aviator.code.OptimizeCodeGenerator.getResult(OptimizeCodeGenerator.java:416) at com.googlecode.aviator.parser.ExpressionParser.parse(ExpressionParser.java:976) at com.googlecode.aviator.parser.ExpressionParser.parse(ExpressionParser.java:981) at com.googlecode.aviator.AviatorEvaluatorInstance.innerCompile(AviatorEvaluatorInstance.java:1365) at com.googlecode.aviator.AviatorEvaluatorInstance.compile(AviatorEvaluatorInstance.java:1328) at org.casbin.jcasbin.main.CoreEnforcer.enforce(CoreEnforcer.java:492) at org.casbin.jcasbin.main.CoreEnforcer.enforce(CoreEnforcer.java:632)

casbin-bot commented 1 year ago

@tangyang9464 @imp2002

hsluoyz commented 1 year ago

@lissali can you provide a full example code?

imp2002 commented 1 year ago
import org.casbin.jcasbin.model.Model;
import org.casbin.jcasbin.persist.Adapter;
import org.casbin.jcasbin.persist.file_adapter.FileAdapter;

public class Main {
    public static void main(String[] args) {
        Model m = new Model();
        m.addDef("r", "r", "sub, dom, obj, act");
        m.addDef("p", "p", "sub, dom, obj, act");
        m.addDef("g", "g", "_, _, _");
        m.addDef("e", "e", "some(where (p.eft == allow))");
        m.addDef("m", "m", "g(r.sub, p.sub, r.dom) && keyMatch(r.dom, p.dom) && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act)");

        Adapter adapter = new FileAdapter("examples/rbac_with_domain_pattern_policy.csv");
        Enforcer e = new Enforcer(m, adapter);
        e.enforce("alice", "domain1", "data1", "read");
    }
}

examples/rbac_with_domain_pattern_policy.csv:

p, admin, domain1, data1, read
p, admin, domain1, data1, write
p, admin, domain2, data2, read
p, admin, domain2, data2, write

g, alice, admin, *
g, bob, admin, domain2

Result: image

Did reproduce your error.

hsluoyz commented 1 year ago

Closed as stale