快乐冲浪与生活

多体验、多体会、多体悟

0%

信号与槽

  • 信号(Signal):对象在状态发生变化时主动发出的通知,本身不包含业务逻辑。
    • 由 Qt 内置控件预先定义(clicked / textChanged / valueChanged),或者自定义信号
    • 信号可以携带参数,用于把数据传递给接收方
  • 槽(Slot):普通可调用函数(方法),用来响应信号;信号触发时,槽函数被执行。
    • 可以是类成员方法、普通函数、lambda
    • 槽的参数数量 ≤ 信号参数数量;多余参数可以设置默认值

核心优势:解耦。发送方只负责发信号,不需要知道谁接收;接收方只负责处理,不需要持有发送方强依赖。 底层:属于发布订阅模型。

Casbin 是一个基于声明式访问控制引擎,用于在应用中实现访问控制策略。

Casbin 只负责授权,不负责认证。

基础概念

Casbin 包含 5 个核心组件:

  1. 模型(Model):定义一套权限“语法框架”,规定请求长什么样、策略字段有哪些、怎么匹配、命中后怎么算结果。
  2. 策略(Policy):具体的权限记录,是填充到 Model 模板里的实例数据。
  3. 执行器(Enforcer):调度中心,绑定 Model + Adapter,对外提供鉴权、策略管理 API。
  4. 适配器(Adapter):隔离 Enforcer 和存储介质,负责 Policy 的读。
  5. 匹配器(Matcher):定义了主体和资源的匹配规则,用于判断是否命中策略。

Enforcer 不是线程安全。生产一般全局单例;写策略的时候建议加锁。