身份授权中间件
身份授权中间件用于控制用户对 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()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
添加依赖
需要在依赖配置文件(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"}
1
2
3
4
5
2
3
4
5
授权策略配置
支持基于角色、策略等多种授权方式:
cangjie
builder.services.addAuthorization().addPolicy("admin", policy => {
policy.requireRole("admin")
})
host.useEndpoints { endpoints =>
endpoints.mapGet("admin", [Authorize("admin")], context => {
context.response.write("admin only")
})
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
最佳实践
- 授权中间件应在路由和终结点注册之前。
- 合理设计权限模型,避免过度授权。
- 授权失败应返回 403 Forbidden,便于前端识别。
- 可结合自定义策略实现复杂权限控制。