Meteor.loginWithToken 抛出 403 禁止登录

问题描述 投票:0回答:1

我正在实现自己的登录逻辑,而不是使用 Meteor.loginWithPassword。

对用户凭据执行所有检查后,我将从后端生成访问令牌:

前端将使用此令牌使用 Meteor.loginWithToken 进行登录:

Meteor.call('Users.login', username, usernameType, password, (error, result) => {
                console.log(error, result);
                if (!error) {
                    Meteor.loginWithToken(result, (error) => {
                        console.error(stack);
                    });
                } else {
                }
            });

但流星不断抛出错误代码 403 并显示以下错误消息:

I20231025-16:28:45.143(8)?   error: errorClass [Error]: Login forbidden [403]
I20231025-16:28:45.143(8)?       at errorClass.Meteor.Error.clone (packages/meteor.js:754:10)
I20231025-16:28:45.143(8)?       at Object.EJSON.clone (packages/ejson/ejson.js:595:14)
I20231025-16:28:45.143(8)?       at packages/ejson/ejson.js:606:22
I20231025-16:28:45.144(8)?       at Array.forEach (<anonymous>)
I20231025-16:28:45.144(8)?       at Object.EJSON.clone (packages/ejson/ejson.js:605:13)
I20231025-16:28:45.144(8)?       at cloneAttemptWithConnection (packages/accounts-base/accounts_server.js:1510:31)
I20231025-16:28:45.144(8)?       at packages/accounts-base/accounts_server.js:256:16
I20231025-16:28:45.144(8)?       at Hook.forEach (packages/callback-hook/hook.js:110:15)
I20231025-16:28:45.144(8)?       at Hook.each (packages/callback-hook/hook.js:122:17)
I20231025-16:28:45.144(8)?       at AccountsServer._failedLogin (packages/accounts-base/accounts_server.js:255:30)
I20231025-16:28:45.144(8)?       at AccountsServer._attemptLogin (packages/accounts-base/accounts_server.js:488:12)
I20231025-16:28:45.144(8)?       at MethodInvocation.methods.login (packages/accounts-base/accounts_server.js:654:23)
I20231025-16:28:45.144(8)?       at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1885:12)
I20231025-16:28:45.144(8)?       at packages/ddp-server/livedata_server.js:769:19
I20231025-16:28:45.144(8)?       at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1257:12)
I20231025-16:28:45.144(8)?       at packages/ddp-server/livedata_server.js:767:46 {
I20231025-16:28:45.144(8)?     isClientSafe: true,

我研究了meteor.js代码,发现EJSON.clone()发生错误,但不知道如何修复它。我在这个问题上纠结了好久。有人有建议吗

真的很感谢!!!

修复此问题的解决方案。

javascript meteor
1个回答
0
投票

我已经解决了这个问题。这是因为我没有在

Accounts.validateLoginAttempt
函数中返回任何内容。导致它总是返回403禁止。此函数期望返回值
true
false
来指示成功或拒绝登录尝试。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.