我一直在努力学习如何使用Aqueduct的授权,但我正在努力解决一些错误。 我发现了这个问题(OAuth Error using Aqueduct, mismatched ManagedPropertyType),它解决了第一个错误,说它正在传递_ImmutableList时期望一个字符串。然而,每当我发出以下POST请求时:
Future main() async {
var http2 = new http.Client();
var clientID = "com.wildfire.mobile";
var clientSecret = "myspecialsecret ";
var body = "username=usr&password=pwd&grant_type=password";
var clientCredentials = new Base64Encoder().convert(
"$clientID:$clientSecret".codeUnits);
var response = await
http.post(
"http://localhost:8081/register",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Basic $clientCredentials"
},
body: body);
我收到500错误作为回复和以下异常:
NoSuchMethodError: The getter 'credentials' was called on null.
在
request.authorization.credentials.username
然而,在_user表中,我看到了我注册的用户的条目。我是否应该忽略错误或者有什么方法可以解决这个问题?
编辑: 这确实是一个配置错误的问题。删除所有数据库后,我添加了一个database.yaml文件,我认为该文件与config.yaml相同,但显然不是。
答案 0 :(得分:1)
如果请求未通过Authorizer,凭据将为null。在这种情况下,您需要一个基本授权人:
router
.route("/register")
.pipe(new Authorizer.basic(authServer))
.generate(() => new RegisterController());