Я хочу получить токен из Authorization
заголовка запроса.
import 'dart:async';
import 'package:aqueduct/aqueduct.dart';
class SecretController extends ResourceController {
@Operation.get()
Future<Response> signin() async {
request.headers // ??? not available
}
}
Как получить доступ к этому заголовку в Акведук?
Запрос — это оболочка вокруг необработанного объекта 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;
}