无法在aqueduct的db_and_auth / wildfire示例中创建帐户

时间:2017-08-22 03:05:43

标签: oauth-2.0 dart aqueduct

我一直在努力学习如何使用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相同,但显然不是。

1 个答案:

答案 0 :(得分:1)

如果请求未通过Authorizer,凭据将为null。在这种情况下,您需要一个基本授权人:

router
  .route("/register")
  .pipe(new Authorizer.basic(authServer))
  .generate(() => new RegisterController());