创建非oauth Meteor Accounts包

时间:2013-11-18 14:44:22

标签: authentication meteor

account-foobar包都依赖于基于oauth的身份验证系统,并且涉及相当多的令人困惑的,无证件的样板。我想知道是否有一种简单的方法来创建一个非oauth身份验证系统的包,它将与Meteor帐户系统正常集成。我想到的非oauth系统是一个简单的外部API,只接受用户名和密码,并返回一个带有成功数据或错误的简单json对象。

有一种简单的方法吗? Meteor是否提供了我错过的API?

编辑:这一点工作正常,我只是不完全确定如何将其连接到帐户系统:

HTTP.post('https://my-site.com/api/login.json', { params: { username: 'foo', password: 'bar' } }, function (error, result) {
    if (result) console.log('User data:', result.data);
});

// User data: { userId: 217, username: "foobar" }

1 个答案:

答案 0 :(得分:4)

看起来Meteor的帐户密码包应该适合您(简单的用户名/密码为auth),但是如果你需要定制的东西,你可以自己做。

如果您不想使用任何内置帐户*包,则可以滚动自己的身份验证包。您只需注册自己的登录处理程序并进行一些簿记,以便在重新连接时对会话进行身份验证。

一步一步:

1:添加基于帐户的软件包:meteor add accounts-base

2:在服务器上,添加Accounts.registerLoginHandler调用

Accounts.registerLoginHandler(function(loginRequest) {
  // ... check loginRequest for proper credentials - up to you 
  var userId = something; // determined by the credentials check

  // add a resume token so that Meteor can resume your session on reconnect
  var stampedToken = Accounts._generateStampedLoginToken();
  Meteor.users.update(session.user, 
    {$push: {'services.resume.loginTokens': stampedToken}});

  return {
    id: userId,
    token: stampedToken.token
  });

3:在客户端上调用登录

var loginRequest = { ... your auth credentials ... };
Accounts.callLoginMethod({
  methodArguments: [loginRequest],
  userCallback: function (err) {
      if (!err) {  ... do stuff here on successful login ...  }
  }});

就是这样!

相关问题