添加功能

除了 API 核心和前端之外,实际项目通常还需要额外功能,以确保安全性、访问控制和后台进程的执行。


Lino 使添加这些功能变得标准化,无论是在后端(端点)还是前端(Blazor 应用)都能体现出来。

安全性与认证

认证是任何安全系统的基础。Lino 支持基于 JWT(JSON Web Tokens)的认证,在 API 中使用 Bearer 方案。

典型认证流程:

1. 用户登录(通过端点或专用页面)。
2. JWT 会被签发,其中包含表示身份、角色和权限的 claims。
3. 每个 API 请求在 header 中包含 token:Authorization: Bearer <token>
4. 认证中间件验证 token,检查签名和过期时间。

基于策略的授权

Lino 使用策略(Policies)实现细粒度授权:

  • 每个操作可以要求特定策略(例如:People.Read, People.Create)。
  • 策略通过 AddAuthorization 配置。
  • 端点可以通过声明来保护:.RequireAuthorization

为 Lino 项目添加安全性

要为项目添加安全性,请执行:

lino features auth add

CLI 交互式向导将要求进行以下配置:

  • 服务 – 配置安全资源的服务。
  • 模块 – 安全功能安装的特定模块(仅适用于模块化服务)。
  • 访问令牌有效期 – 访问令牌的有效时间。
  • 刷新令牌有效期 – 刷新令牌的有效时间。
  • 用户标识类型 – 定义作为 UserId 使用的数据类型(intlongGuid)。

这些设置确保认证/授权流水线自动配置,准备在 API 中使用,并集成到 Blazor。

后台任务

许多系统需要在后台异步执行任务,例如:

  • 发送电子邮件
  • 生成报表
  • 与外部系统同步。

Lino 原生支持 Hangfire 作为任务编排器。

Hangfire 的优势

  • 异步任务的可靠执行。
  • 内置监控面板。
  • 支持定期或计划任务。
  • 任务在数据库中的可靠持久化。

事件与 Outbox 消息的集成

为了确保异步集成的一致性,Lino 采用 Outbox Message 模式。

当执行某个业务操作(例如:创建订单)时,对应事件(OrderCreated)会在与域状态持久化相同的事务中保存到 Outbox 表中。 后台处理器会读取 Outbox 表并将事件发布到消息系统(RabbitMQ、Kafka 等)。

Outbox 的优势:

  • 原子性 → 数据库与发布的事件保持同步。
  • 可靠性 → 即使出现故障也不会丢失事件。
  • 可扩展性 → 多个消费者可以处理事件。

这种模式保证了分布式架构中的安全且有弹性的集成。

通过这些附加功能,Lino 提供了强大的安全性、细粒度的访问控制和可靠的异步处理,满足现代生产应用的关键需求。

在 Lino 项目中添加后台任务功能

异步处理对于不应阻塞主请求流程的任务至关重要,例如发送通知、生成报表或发布事件。

Lino 允许通过单条命令启用后台任务支持(通过库):

lino features background-job add

CLI 将提示以下配置参数:

  • 服务 – 要添加后台任务功能的服务。
  • – 用于任务执行和调度的选择库。
  • 检查和处理间隔 - 队列检查新 Outbox 消息的时间间隔。
  • 记录数量 - 每个周期处理的最大记录数,用于控制并行和资源消耗。

这些选项可让系统以可扩展且有弹性的方式进行配置,确保后台任务的可靠执行。

发生了未处理的错误。 重新加载 🗙