我想从请求的Authorization
标头中获取令牌。
import 'dart:async';
import 'package:aqueduct/aqueduct.dart';
class SecretController extends ResourceController {
@Operation.get()
Future<Response> signin() async {
request.headers // ??? not available
}
}
如何访问Aqueduct中的标头?
答案 0 :(得分:1)
请求是Dart标准库中原始HttpRequest对象的包装,所以一种方法是像这样访问它:
request.raw.headers["authorization"]
您还可以将标头的值绑定到方法参数。当您想将字符串标题值解析为另一种类型和/或验证标题时,这很好。 (You can do some really convenient stuff with binding.)
@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;
}