diff --git a/api/api_v1/authz/authz.py b/api/api_v1/authz/authz.py index fa44098..9c1d700 100644 --- a/api/api_v1/authz/authz.py +++ b/api/api_v1/authz/authz.py @@ -33,8 +33,7 @@ async def add_role_domain( casbin_enforcer.add_role_for_user_in_domain(user=item.username, role=item.role_id, domain=item.game) - casbin_enforcer.load_model() - casbin_enforcer.load_policy() + return schemas.Msg(code=0, msg='添加成功', data=True) @@ -75,8 +74,7 @@ async def del_role_domain( res = casbin_enforcer.delete_roles_for_user_in_domain(user=data_in.username, role=data_in.role_id, domain=data_in.game) - casbin_enforcer.load_model() - casbin_enforcer.load_policy() + await crud.role.delete_id(db, data_in.role_id) return schemas.Msg(code=0, msg='ok', data=res) @@ -93,8 +91,7 @@ async def add_policy( res = 0 for path in data_id.path_list: res = casbin_enforcer.add_policy(data_id.role_id, data_id.game, path, data_id.act) - casbin_enforcer.load_model() - casbin_enforcer.load_policy() + return schemas.Msg(code=0, msg='ok', data=res) @@ -108,8 +105,7 @@ async def remove_policy( """ res = casbin_enforcer.remove_policy(data_id.role_id, data_id.game, data_id.path, data_id.act) - casbin_enforcer.load_model() - casbin_enforcer.load_policy() + return schemas.Msg(code=0, msg='ok', data=res) @@ -157,8 +153,7 @@ async def del_api( paths = await crud.api_list.find_ids(db, data_in.ids, {'path': 1}) for item in paths: casbin_enforcer.remove_filtered_policy(2, item['path']) - casbin_enforcer.load_model() - casbin_enforcer.load_policy() + # 删除保存的记录 res = await crud.api_list.del_api(db, data_in) diff --git a/utils/adapter.py b/utils/adapter.py index b624f77..6466306 100644 --- a/utils/adapter.py +++ b/utils/adapter.py @@ -141,5 +141,8 @@ class Adapter(persist.Adapter): casbin_adapter = Adapter(settings.DATABASE_URI, settings.MDB_DB) -casbin_enforcer = casbin.Enforcer('rbac_model.conf', casbin_adapter) -casbin_model = casbin_enforcer.get_model() \ No newline at end of file +casbin_enforcer = casbin.SyncedEnforcer('rbac_model.conf', casbin_adapter) +casbin_model = casbin_enforcer.get_model() +casbin_enforcer.start_auto_load_policy(30) + + diff --git a/utils/casbin/synced_enforcer.py b/utils/casbin/synced_enforcer.py index 9061c35..886d1d8 100644 --- a/utils/casbin/synced_enforcer.py +++ b/utils/casbin/synced_enforcer.py @@ -49,6 +49,7 @@ class SyncedEnforcer(): return self._auto_loading.value = True self._auto_loading_thread = threading.Thread(target=self._auto_load_policy, args=[interval], daemon=True) + self._auto_loading_thread.start() def stop_auto_load_policy(self): """stops the thread started by start_auto_load_policy"""