Skip to content

身份授权中间件

身份授权中间件用于控制用户对 API 和资源的访问权限,是安全开发的核心环节。

授权中间件典型时序图

授权流程

  • 授权中间件会自动识别用户身份和角色。
  • 未授权访问时返回 403 Forbidden。
  • 可结合认证中间件实现完整安全链路。

快速启动

只需 4 步即可集成授权服务:

cangjie
import spire_web_hosting.*
import spire_web_http.*
import spire_web_authorization.*

main() {
    // 1. 构建Web主机
    let builder = WebHost.createBuilder()

    // 2. 注册授权服务
    builder.services.addAuthorization()
    let host = builder.build()

    // 3. 启用授权中间件
    host.useAuthorization()

    // 4. 启动主机
    host.run()
}

添加依赖

需要在依赖配置文件(cjpm.toml)中添加如下依赖:

bash
[dependencies]
  spire_web_http = { path = "/spire_web_http"}
  spire_web_hosting = { path = "/spire_web_hosting"}
  spire_web_authorization = { path = "/spire_web_authorization"}
  spire_extensions_injection = { path = "/spire_extensions_injection"}

授权策略配置

支持基于角色、策略等多种授权方式:

cangjie
builder.services.addAuthorization().addPolicy("admin", policy => {
    policy.requireRole("admin")
})

host.useEndpoints { endpoints =>
    endpoints.mapGet("admin", [Authorize("admin")], context => {
        context.response.write("admin only")
    })
}

最佳实践

  • 授权中间件应在路由和终结点注册之前。
  • 合理设计权限模型,避免过度授权。
  • 授权失败应返回 403 Forbidden,便于前端识别。
  • 可结合自定义策略实现复杂权限控制。