mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-24 08:20:31 +08:00
feat: optimize getEnforcer, only load filtered polices (#1669)
This commit is contained in:
parent
89d29c2519
commit
4c4ad8320d
@ -20,6 +20,7 @@ import (
|
|||||||
|
|
||||||
"github.com/casbin/casbin/v2"
|
"github.com/casbin/casbin/v2"
|
||||||
"github.com/casbin/casbin/v2/config"
|
"github.com/casbin/casbin/v2/config"
|
||||||
|
"github.com/casbin/casbin/v2/log"
|
||||||
"github.com/casbin/casbin/v2/model"
|
"github.com/casbin/casbin/v2/model"
|
||||||
"github.com/casdoor/casdoor/conf"
|
"github.com/casdoor/casdoor/conf"
|
||||||
xormadapter "github.com/casdoor/xorm-adapter/v3"
|
xormadapter "github.com/casdoor/xorm-adapter/v3"
|
||||||
@ -50,27 +51,30 @@ func getEnforcer(permission *Permission) *casbin.Enforcer {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
policyFilter := xormadapter.Filter{}
|
// Init an enforcer instance without specifying a model or adapter.
|
||||||
|
// If you specify an adapter, it will load all policies, which is a
|
||||||
if !HasRoleDefinition(m) {
|
// heavy process that can slow down the application.
|
||||||
policyFilter.Ptype = []string{"p"}
|
enforcer, err := casbin.NewEnforcer(&log.DefaultLogger{}, false)
|
||||||
err = adapter.LoadFilteredPolicy(m, policyFilter)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enforcer, err := casbin.NewEnforcer(m, adapter)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// load Policy with a specific Permission
|
enforcer.InitWithModelAndAdapter(m, nil)
|
||||||
policyFilter.V5 = []string{permission.GetId()}
|
enforcer.SetAdapter(adapter)
|
||||||
|
|
||||||
|
policyFilter := xormadapter.Filter{
|
||||||
|
V5: []string{permission.GetId()},
|
||||||
|
}
|
||||||
|
|
||||||
|
if !HasRoleDefinition(m) {
|
||||||
|
policyFilter.Ptype = []string{"p"}
|
||||||
|
}
|
||||||
|
|
||||||
err = enforcer.LoadFilteredPolicy(policyFilter)
|
err = enforcer.LoadFilteredPolicy(policyFilter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return enforcer
|
return enforcer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user