Как получить заголовок запроса на сервере Dart Aqueduct - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу получить токен из заголовка Authorization запроса.

import 'dart:async';
import 'package:aqueduct/aqueduct.dart';


class SecretController extends ResourceController {

  @Operation.get()
  Future<Response> signin() async {

    request.headers // ??? not available

  }
}

Как получить доступ к этому заголовку в Акведук ?

1 Ответ

1 голос
/ 10 апреля 2019

Запрос представляет собой обертку вокруг необработанного объекта HttpRequest из стандартной библиотеки Dart, поэтому один из способов - получить к нему следующий доступ:

request.raw.headers["authorization"]

Вы также можете привязать значение заголовка к параметру метода; Это хорошо, когда вы хотите проанализировать значение заголовка строки в другом типе и / или проверить заголовок. ( Вы можете сделать некоторые действительно удобные вещи с привязкой. )

@Operation.get()
Future<Response> signIn(
  @Bind.header("authorization") String authorization) async {
  ...
}

Наконец, для заголовка Authorization вы можете использовать промежуточное ПО Authorizer. Это проверяет заголовок авторизации и создает объект авторизации с информацией об авторизованном владельце ресурса («пользователь»), к которому вы можете получить доступ из вашего метода.

router.route("/secret")
  .link(() => Authorizer.bearer(authServer))
  .link(() => SecretController());

...

@Operation.get()
Future<Response> signIn() async {
  final userIDForRequest = request.authorization.ownerID;
}
...