【问题标题】:How to get the request header in a Dart Aqueduct server如何在 Dart Aqueduct 服务器中获取请求标头
【发布时间】:2019-04-09 23:41:47
【问题描述】:

我想从请求的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 http-headers httprequest aqueduct


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多