如何在AWS Serverless中全局配置自定义授权器并豁免指定路由?
解决方案:全局配置默认授权器,仅排除公开路由
可以实现这种“默认保护、例外公开”的配置,具体操作如下:
1. 全局设置默认自定义授权器
在你的Serverless配置的httpApi根节点下,添加defaultAuthorizer字段,指定你已经定义好的authAuthorizer。这样所有HTTP API路由会默认启用该授权器,无需逐个手动配置。
修改后的全局配置示例:
httpApi: authorizers: authAuthorizer: type: request functionName: authAuthorizer defaultAuthorizer: authAuthorizer # 新增这行,设置全局默认授权器
2. 为公开路由跳过授权
对于不需要保护的路由(比如登录、公开信息查询等),只需要在该路由的httpApi事件配置里显式设置authorizer: false,即可跳过全局授权器的校验。
示例:
loginUser: handler: src/loginUser.main events: - httpApi: method: POST path: /login authorizer: false # 跳过授权,允许公开访问
注意事项
- 确保你的Serverless框架版本支持
httpApi.defaultAuthorizer配置(Serverless v3及以上版本均支持)。 - 自定义授权器函数
authAuthorizer的逻辑需要正确处理授权校验,比如验证请求头中的令牌、返回正确的IAM策略等。
这种配置方式正好解决了你担心的“遗漏授权导致重要路由公开”的问题,所有路由默认受保护,只有你明确标记的路由才会公开。
内容的提问来源于stack exchange,提问作者Guilherme Chiara
相关产品推荐
相关产品推荐

