Я узнаю о том, как работает аутентификация с использованием инфраструктуры Aqueduct.
В моем файле channel.dart у меня есть маршрут:
router
.route('/protected')
.link(() => Authorizer.basic(validator))
.link(() => ProtectedController());
Но я не знаю, как создать validator
. В документах я вижу, что я могу сделать собственный Authorizer без использования AuthServer. Пример кода такой:
class BasicValidator implements AuthValidator {
@override
FutureOr<Authorization> validate<T>(AuthorizationParser<T> parser, T authorizationData, {List<AuthScope> requiredScope}) {}
var user = await userForName(usernameAndPassword.username);
if (user.password == hash(usernameAndPassword.password, user.salt)) {
return Authorization(...);
}
return null;
}
}
Я хотел бы привести базовый рабочий пример, но это самое близкое, что я мог бы получить:
class BasicValidator implements AuthValidator {
@override
FutureOr<Authorization> validate<T>(AuthorizationParser<T> parser, T authorizationData, {List<AuthScope> requiredScope}) {
final validUsername = 'bob';
final validPassword = 'password123';
// How do I get the parsed username?
// How do I get the parsed password?
if (parsedUsername == validUsername && parsedPassword == validPassword) {
// How do I create an Authorization?
return Authorization(...);
}
return null;
}
// What is this?
@override
List<APISecurityRequirement> documentRequirementsForAuthorizer(APIDocumentContext context, Authorizer authorizer, {List<AuthScope> scopes}) {
return null;
}
}
Может ли кто-нибудь показать мне базовый рабочий пример средства проверки базовой авторизации?