如何在 Dart Aqueduct 服务器中获取请求 header
How to get the request header in a Dart Aqueduct server
我想从请求的 Authorization
header 中获取令牌。
import 'dart:async';
import 'package:aqueduct/aqueduct.dart';
class SecretController extends ResourceController {
@Operation.get()
Future<Response> signin() async {
request.headers // ??? not available
}
}
如何在 Aqueduct 中访问 header?
请求是来自 Dart 标准库的原始 HttpRequest object 的包装器,因此一种方法是像这样访问它:
request.raw.headers["authorization"]
您还可以将 header 的值绑定到方法参数;当您想将字符串 header 值解析为另一种类型时,这很好 and/or 验证 header。 (You can do some really convenient stuff with binding.)
@Operation.get()
Future<Response> signIn(
@Bind.header("authorization") String authorization) async {
...
}
最后,具体到Authorizationheader,可以使用Authorizer中间件。这将验证授权 header 并创建授权 object,其中包含您可以从您的方法访问的授权资源所有者 ('the user') 的详细信息。
router.route("/secret")
.link(() => Authorizer.bearer(authServer))
.link(() => SecretController());
...
@Operation.get()
Future<Response> signIn() async {
final userIDForRequest = request.authorization.ownerID;
}
我想从请求的 Authorization
header 中获取令牌。
import 'dart:async';
import 'package:aqueduct/aqueduct.dart';
class SecretController extends ResourceController {
@Operation.get()
Future<Response> signin() async {
request.headers // ??? not available
}
}
如何在 Aqueduct 中访问 header?
请求是来自 Dart 标准库的原始 HttpRequest object 的包装器,因此一种方法是像这样访问它:
request.raw.headers["authorization"]
您还可以将 header 的值绑定到方法参数;当您想将字符串 header 值解析为另一种类型时,这很好 and/or 验证 header。 (You can do some really convenient stuff with binding.)
@Operation.get()
Future<Response> signIn(
@Bind.header("authorization") String authorization) async {
...
}
最后,具体到Authorizationheader,可以使用Authorizer中间件。这将验证授权 header 并创建授权 object,其中包含您可以从您的方法访问的授权资源所有者 ('the user') 的详细信息。
router.route("/secret")
.link(() => Authorizer.bearer(authServer))
.link(() => SecretController());
...
@Operation.get()
Future<Response> signIn() async {
final userIDForRequest = request.authorization.ownerID;
}