我正在学习如何使用 Aqueduct 框架进行身份验证。
在我的 channel.dart 文件中,我有一条路线:
router
.route('/protected')
.link(() => Authorizer.basic(validator))
.link(() => ProtectedController());
但我不知道如何创建validator. 在文档中,我看到我可以在不使用 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;
}
}
谁能给我看一个基本授权验证器的基本工作示例?