authentication - 如何在 Meteor 中创建自定义用户身份验证?

标签 authentication meteor

我正在尝试为应用程序创建以下身份验证: 用户输入电话号码并收到带有服务器生成的代码的短信(短信通过外部服务处理)。如果用户输入正确的代码,他就登录了。 这意味着我必须有两个登录阶段:使用手机注册用户并使用代码登录,所以我认为客户端应该是这样的:

Meteor.getSmsCode = function(phone, username, callback) {
  Accounts.callLoginMethod({
    methodName: 'getsmscode',
    methodArguments: [{
      getsmscode: true,
      phone: phone,
      username: username
    }],
    userCallback: callback
  });
};


Meteor.loginWithCode = function(phone, code, callback) {
  Accounts.callLoginMethod({
    methodName: 'login',
    methodArguments: [{
      hascode: true,
      phone: phone,
      code: code
    }],
    userCallback: callback
  });
};

但我对服务器端感到困惑——应该有两种方法: 第一个应该只注册一个用户(并与 SMS 服务通信),第二个应该让他登录。

这是现在的服务器测试代码:

Meteor.users.insert({phone: '123456789', code: '123', username:'ilyo'});

Accounts.registerLoginHandler(function(loginRequest) {
  var user = Meteor.users.findOne({phone: loginRequest.phone});

  if(user.code !== loginRequest.code) {
    return null;
  }

  var stampedToken = Accounts._generateStampedLoginToken();
  var hashStampedToken = Accounts._hashStampedToken(stampedToken);

  Meteor.users.update(userId,
    {$push: {'services.resume.loginTokens': hashStampedToken}}
  );

  return {
    id: user._id,
    token: stampedToken.token
  };
});

这就是我尝试时发生的情况: enter image description here

  • 为什么我得到了 500
  • 为什么用户没有 codephone 字段?
  • 我应该为 getSmsCode 使用什么方法?

最佳答案

Meteor.createUser 在 How can I create users server side in Meteor? 上有描述

然后,Accounts.onCreateUser 将包含业务逻辑 http://docs.meteor.com/#accounts_oncreateuser

500 的更准确消息将在服务器端标准输出上。可能是安全性。

关于authentication - 如何在 Meteor 中创建自定义用户身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25618511/

相关文章:

PHP 密码无效,即使有效

apache 客户端身份验证 - 将客户端证书的指纹设置为 header 值

rendering - 强制 Handlebars 模板使用 meteor 按需渲染

mongodb - Meteor find().fetch() 与多个条件不工作

azure - 使用azure功能在移动应用程序中进行身份验证

cakephp - acos 表中使用的 model、lft 和 rght 字段是什么?

没有身份脚手架的 .NET Blazor 登录

javascript - 如何将外部方法传递给 React 中的无状态功能组件

javascript - 如何将集合插入到 meteor 表单中

meteor - 您如何保护客户端MongoDB API?