Match Error with Meteor.callLoginMethod



我正在尝试发送我的登录名:

'submit form': function(event) {
event.preventDefault();
event.stopPropagation();
var loginRequest = {
username: event.target.loginUsername.value.toLowerCase(),
password: event.target.loginPassword.value,
};
var callback = function(response) {
Session.set('showLoading', false);
};
Session.set('showLoading', true);
Accounts.callLoginMethod({
methodArguments: [loginRequest],
userCallback: callback,
});
},

但是我收到一个错误,我无法弄清楚造成此错误的原因是什么:

Exception while invoking method 'login' Error: Match error: Unknown key in field username
...
Sanitized and reported to the client as: Match failed [400]

我在网络上建立了一些信息,但没有真正帮助我的信息。我认为它是在我打电话时生成的Accounts.callLoginMethod

我的表单如下所示:

<form>
<div class="row">
<div class="input-field col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<label for="loginUsername">Username</label>
<input id="loginUsername" type="text" class="form-control" disabled="{{showLoading}}" required>
<br>
<label for="loginPassword">Password</label>
<input id="loginPassword" type="password" class="form-control" disabled="{{showLoading}}" required>
</div>
</div>
<br>
{{#if showLoading}}
{{> loading}}
{{else}}
<div class="text-center">
<button type="submit" class="btn btn-primary">Login</button>
</div>
{{/if}}
</form>

有人可以帮助我或知道是什么造成了此错误?

这是我的2美分。 从技术上讲,Accounts.callLoginMethod不是一个记录在案的API函数,理论上可能会在未来的任何Meteor版本中发生变化。 由于它没有记录,因此它返回的错误没有很好地定义,可能会令人困惑。

由于您只是在进行密码身份验证,因此我建议您改用Meteor.loginWithPassword(user, password, [callback])。 至少这样,如果您遇到此类错误,您就有了一组 API 文档可以回退(当出现问题时,它还会返回更具体的错误)。

尝试切换,看看是否仍然收到错误输出。 如果是这样,错误将是以下错误消息之一,您可以更好地调试以查看发生了什么。

  • "登录请求的无法识别的选项 [400]"(如果未定义用户或密码)。
  • "匹配失败 [400]",如果用户不是对象或字符串,或者密码不是字符串。
  • "找不到用户 [403]",如果用户中提供的电子邮件或用户名不属于注册用户。
  • "密码不正确[403]",如果提供的密码不正确。
  • 如果用户没有密码,则为"用户未设置密码 [403]"。

如果遇到上述错误之一,请console.log(username)并确保它是具有预期值的字符串或对象。

最新更新