Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
meteor:在服务器端使用帐户密码创建用户_Meteor - Fatal编程技术网

meteor:在服务器端使用帐户密码创建用户

meteor:在服务器端使用帐户密码创建用户,meteor,Meteor,我正在使用meteor帐户密码创建一个用户注册网页。我不希望用户在注册后立即登录,因此我将请求从客户端发送到服务器,服务器调用Accounts.createUser({username:someusername,password:somepassword})。注册页面的目的是让管理员用户注册其他用户。一些用户拥有特权,允许他们将来登录 我的问题是,当客户端向服务器发送请求时,例如 var userParams = {username: someusername, password: somepa

我正在使用meteor帐户密码创建一个用户注册网页。我不希望用户在注册后立即登录,因此我将请求从客户端发送到服务器,服务器调用
Accounts.createUser({username:someusername,password:somepassword})
。注册页面的目的是让管理员用户注册其他用户。一些用户拥有特权,允许他们将来登录

我的问题是,当客户端向服务器发送请求时,例如

var userParams = {username: someusername, password: somepassword}
Meteor.call("addUser", userParams)
我是否将密码作为纯文本通过线路从客户端发送到服务器?抱歉,如果这听起来像个愚蠢的问题。但是,我使用wireshark查看了客户端和服务器之间的通信量,没有注意到纯文本密码在IP数据包中

我想使用accounts password的功能,因为我希望具有特殊权限的注册用户稍后登录和注销


所以,我想知道有没有人能解释一下这个问题?以前是否有其他人做过类似的事情(即从客户端请求在服务器端注册用户)?我想听听您的建议。

如果您已经有用户,并且希望使用“管理员”帐户创建其他用户,我建议您使用此软件包

然后使用这个代码

projectName/server/server.js上使用此方法

Meteor.methods({
 createUsers: function(email,password,roles,name){
   var users = [{name:name,email:email,roles:[roles]},
               ];
.each(users, function (user) {
 var id;
id = Accounts.createUser({
 email: user.email,
 password: password,
 profile: { name: user.name }
 });
if (user.roles.length > 0) {
      Roles.addUsersToRoles(id, user.roles);
     }
    });
},
   deleteUser : function(id){       ///Some Delete Method (ignore if dont needed)
  return Meteor.users.remove(id);
  },
});
在同一个文件.js上,在另一个文件上,如projectName/server/publish.js发布角色

//publish roles
  Meteor.publish(null, function (){ 
   return Meteor.roles.find({})
   })
Meteor.publish("Super-Admin", function () {
    var user = Meteor.users.findOne({_id:this.userId});

     if (Roles.userIsInRole(user, ["Super-Admin"])) {
    return Meteor.users.find({}, {fields: {emails: 1, profile: 1, roles: 1}});
     } 
  this.stop();
      return;
   });

      Meteor.publish("Admin", function () {
   var user = Meteor.users.findOne({_id:this.userId});

    if (Roles.userIsInRole(user, ["Admin"])) {
    return Meteor.users.find({}, {fields: {emails: 1, profile: 1, roles: 1}});
   } 
  this.stop();
 return;
  });
  Meteor.publish(null, function (){ 
 return Meteor.roles.find({})
 })
现在在projectName/client/register/register.html上使用此模板

<template name="register">
  <form id="register-form" action="action" >
    <input type="email" id="register-email" placeholder="Nombre Nuevo Usuario">
    <input type="password" id="register-password" placeholder="Password">        
      <select id="register-rol" class="form-control">
         <option value="Admin" selected>Admin</option>
        <option value="Super-Admin" selected>Super Admin</option>
        <option value="Normal" selected>Normal</option>
     </select>
   <input type="submit" value="Register">
  </form>
<!-- List and button with delete -->
{{#each users}}
      <li id="user"><h6>{{email}}</h6><h6>{{roles}}</h6></li>
        <button id="deleteUser" class="btn btn-danger btn-xs" > Borrar Usuario        {{email}}       </button>
     {{/each}}
</tempalate>
现在有了这段代码,您可以像这样使用帮助程序

 {{#if isInRole 'admin'}}
    <h1> hello Admin </h1?
   {{else}}
   <h1> sorry bro just admin can look at this page</h1>  
  {{/if}}
{{{#如果isInRole'admin'}

hello Admin实际上,任何涉及创建用户帐户并让用户传递其登录凭据的Web应用程序都应该通过HTTPS完成。启用HTTPS后,从客户端向服务器传递密码不应成为问题

处理此情况的最佳方法是帐户密码选项

您可以创建一个没有密码的帐户,允许用户稍后通过发送到其电子邮件地址的链接添加密码

如果这个解决方案符合您的需求,那么就没有什么需要知道的了

用户单击电子邮件中的链接后要调用的回调函数是使用register函数设置的

根据文档,下一步是将令牌传递给函数。令牌和done方法作为参数传递给Accounts.onerollmentlink。完成的方法是恢复正常的用户登录过程。Accounts.resetPassword功能可以放在客户端


有关更多信息,请仔细阅读文档。

通过方法调用与服务器之间的通信不会被加密,因此这并不理想。暂时忽略这一点,如果管理员A为用户B创建了一个帐户,B如何知道他/她的密码?这个答案并没有解决将密码从客户端传递到服务器的问题。
Meteor.subscribe('Admin');
Meteor.subscribe('Super-Admin');
 {{#if isInRole 'admin'}}
    <h1> hello Admin </h1?
   {{else}}
   <h1> sorry bro just admin can look at this page</h1>  
  {{/if}}
var user_id = Accounts.createUser({email: someemail,username: someusername});
Accounts.sendEnrollmentEmail(user_id);