流星反应管理员设置

时间:2016-07-22 01:13:18

标签: meteor reactjs login passwords admin

我想使用reactmeteor构建管理员身份验证我在客户端文件夹中使用React设置了以下登录表单:

class Admin extends Component {

  onSubmit(event) {
    event.preventDefault();

    const self = this;
    const email = $(event.target).find('[name=email]').val();
    const password = $(event.target).find('[name=password]').val();

    Meteor.loginWithPassword(email, password, function (err) {
      if (err) console.log(err.reason);
    });
  }

  render() {
    return (
      <div className='flex-login'>
        <form onSubmit={this.onSubmit}>
          <div className='login'>
            <div className='welcome'>
              <p><strong>Greetings</strong>, my dear master :)  </p>
              <p>Did anything surprise you today?</p>
            </div>
            <input name='email' type="email" placeholder="Name" />
            <input name='password' type="password" placeholder="Secretword" />
            <button type="submit">Enter</button>
          </div>
        </form>
      </div>
    );
  }
}

并将以下Accounts.createUser添加到服务器main.js文件中:

import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';

// Creating user
Meteor.startup(() => {
  if (Meteor.users.find().count === 0) {
    Accounts.createUser({
      email: 'master@mail.com',
      password: 'master'
    });
  }
});

当我尝试使用已定义的帐户信息登录时,我会收到console.log User not found

为了达到目的,你能解释一下我所缺少的东西吗?

如果您能解释一下我或者向我指出一些外部资源,我会非常感激,如何为管理员进行自定义安全登录,以便将其保存在production version。<登记/>
这些身份验证的目的是允许进一步访问管理集合的信息。

2 个答案:

答案 0 :(得分:0)

我认为没有创建管理员,因为有其他用户Meteor.users.find().count()的值永远不会为零。您应该检查角色为“admin”的用户是否为零并创建管理员。您可以使用此处的角色包alanning:roles向用户添加角色。

希望有所帮助

谢谢

答案 1 :(得分:0)

你在Meteor.users.find()中使用count而不是count()。count()