dart - 如何在 Dart Aqueduct 服务器中获取请求标头
问题描述
我想从Authorization
请求的标头中获取一个令牌。
import 'dart:async';
import 'package:aqueduct/aqueduct.dart';
class SecretController extends ResourceController {
@Operation.get()
Future<Response> signin() async {
request.headers // ??? not available
}
}
如何访问Aqueduct中的该标题?
解决方案
请求是来自 Dart 标准库的原始 HttpRequest 对象的包装器,因此一种方法是像这样访问它:
request.raw.headers["authorization"]
您还可以将标头的值绑定到方法参数;当您想将字符串标头值解析为另一种类型和/或验证标头时,这很好。(你可以用绑定做一些非常方便的事情。)
@Operation.get()
Future<Response> signIn(
@Bind.header("authorization") String authorization) async {
...
}
最后,具体到 Authorization 标头,可以使用 Authorizer 中间件。这将验证授权标头并创建一个 Authorization 对象,其中包含您可以从您的方法访问的授权资源所有者(“用户”)的详细信息。
router.route("/secret")
.link(() => Authorizer.bearer(authServer))
.link(() => SecretController());
...
@Operation.get()
Future<Response> signIn() async {
final userIDForRequest = request.authorization.ownerID;
}
推荐阅读
- php - docker入口点sh文件重新启动
- python-3.x - 我定义了一个函数,但是在调用该函数时我没有得到任何值
- wordpress - 向 woocommerce 结帐页面添加自定义字段会禁用下订单按钮功能
- reactjs - 选择 React 功能组件中的所有复选框失败,我怀疑是由于渲染发生得太快
- amazon-web-services - Python3 和 aws-cli 版本不同
- javascript - 获取本地 IP 配置,包括 DHCP 值 nodejs
- sql - 尝试获取每月销售量 SQL
- wordpress - 有没有Wordpress功能可以直接获取另一个网站?
- python - 带有非常大的参数的“除以日志中遇到的零”
- struct - RUST:更好(更简单/更简单)的方式来使用结构中的枚举?