Как получить заголовок запроса на сервере 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

  }
}

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

2
0
386
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Запрос — это оболочка вокруг необработанного объекта 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;
}

Другие вопросы по теме