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" }
答案 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 ... }
}});
就是这样!