Meteor's createUser在客户端和服务器上运行
Meteor's createUser running on client and server
我是Meteor的新手,正在努力掌握它的概念。我在下面有一个客户端代码,它触发Meteor方法来创建新用户:
Template["signup-team"].onRendered(function(){
var validator = $('.signup-team-form').validate({
submitHandler: function(event){
var email = $('[name=email]').val();
var password = $('[name=password]').val();
Meteor.call('addNewUser', email, password, "team-captain", function(error, result) {
if (error){
return alert(error.reason);
}
Router.go("complete-signup");
});
}
});
});
该方法被定义为在客户端和服务器上运行。当在服务器上运行时,我希望它创建用户并将角色添加到帐户中。在客户端,我想让用户登录。
Meteor.methods({
addNewUser: function(email, password, role) {
check(email, String);
check(password, String);
if(Meteor.isClient){
Accounts.createUser({
email: email,
password: password,
profile: {
completed: false
}
}, function(error){
if(error){
console.log(error); // Output error if registration fails
} else {
console.log(Meteor.userId());
}
});
} else {
var id = Accounts.createUser({
email: email,
password: password,
profile: {
completed: false
}
});
console.log(id);
Roles.addUsersToRoles(id, role);
}
}
});
服务器部分运行良好,创建了新用户,但在客户端,我收到错误Error: No result from call to createUser
,用户没有自动登录。
我想问题是我不需要在客户端上运行createUser
,而是使用Meteor.loginWithPassword
,但我真的很想知道这背后的理论。感谢
不要这样做。您正在重写核心代码,并造成不必要的安全问题。
不使用addNewUser
方法,只需在客户端上调用Accounts.createUser
即可。使用onCreateUser
回调句柄添加角色。
在您的代码中,您以明文形式将用户密码发送到服务器。当您调用Accounts.createUser
时,密码在发送到服务器之前会被散列。它还负责为您登录新用户。
如果添加角色,您将无法在onCreateUser
回调中使用Roles.addUsersToRoles(id, role)
,因为用户对象尚未添加到数据库中,并且没有_id
。但是,您可以直接将角色添加到提议的用户对象中,如下所示:
Accounts.onCreateUser(function(options, user) {
user.roles = ['team-captain']
return user;
})
再说一遍,也许你不希望所有用户都是队长!
相关文章:
- 客户端服务器REST API captcha实现
- 如何防止在客户端/服务器两侧对文本框进行sql注入
- 最小化在javascript中客户端/服务器之间发送的数据
- 客户端服务器常量通信PHP
- 调试器在Meteor.call(可能是客户端/服务器调试)之后停止
- 是否有一种方法可以限制要上传到客户端服务器的文件大小
- 我可以只使用JavaScript制作客户端/服务器任务管理器吗
- 使用jQuery和MVC进行客户端-服务器搜索
- C/SSL/JQuery.ajax() 客户端 - >服务器连接重置,但发送了 1 个字节
- 用于客户端-服务器通信和安全的 API 密钥
- RESTful Web 应用程序中的客户端服务器体系结构
- 使用 node.js 进行客户端服务器通信
- 节点.js游戏开发,客户端-服务器数据交换逻辑
- 合并客户端/服务器端模板引擎
- 了解如何在javascript/HTML5/NodeJS中实现客户端-服务器-客户端基础结构
- 在客户端/服务器端检索原始电影大小
- 如何扩展 EJSON 以序列化 Meteor 客户端-服务器交互的 RegEx
- Javascript 服务器端事件与 C 客户端服务器程序
- 快速客户端服务器
- 在 NodeJS 中进行客户端-服务器通信的简单方法