如何通过react.js在meteor.js中创建用户

时间:2016-12-11 09:34:13

标签: javascript reactjs meteor meteor-accounts

我试图通过组件的反应来创建用户:

import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import { Accounts } from 'meteor/accounts-base'

import { createContainer } from 'meteor/react-meteor-data';

import { FlowRouter } from 'meteor/kadira:flow-router';
import { mount } from 'react-mounter';

FlowRouter.route('/signup', { name: 'signup', action(){ mount( SignUp ); } });

AccountsTemplates.configure({
   forbidClientAccountCreation: false
});

class SignUp extends Component {
  constructor(props) {
    super(props);
    this.state = { mail:'', pass:''};
  }
  handleMailChange(e){ this.setState({mail: e.target.value}); }
  handlePassChange(e){ this.setState({pass: e.target.value}); }
  eSignup(e){
    e.preventDefault();
    console.log("Sign Up Form submitted.");
    Accounts.createUser({ email:'mail', password:'passwd'}, (err)=> {
      if (err) console.error(err.reason);
      else {
        console.info('Create user success !');
        FlowRouter.go('/');
      }
    });
  }
  render(){
    return (
        <div className="row">
          <div className="container">
            <form name="login">
              <input type="email" name="mail" onChange={this.hMailChange.bind(this)}/>
              <input type="password" name="Pass" onChange={this.hPassChange.bind(this)}/>
              <input type="submit" value="Signup" onClick={this.Signup.bind(this)}/>
            </form>
          </div>
        </div>
    );
  }
}

但我收到错误:403 Signups forbidden。 我查看了流星组件的源代码。也许我发现产生错误的行: https://github.com/meteor/accounts/blob/master/packages/accounts-password/password_server.js#L1014

if (Accounts._options.forbidClientAccountCreation)
   return { error: new Meteor.Error(403, "Signups forbidden") };

如果我将Accounts._options.forbidClientAccountCreation设置为false

,我就不明白为什么此测试有效

account-ui以及其他与我uiusers一起使用的软件包。

我的package.json

  "dependencies": {
    "babel-runtime": "^6.18.0",
    "bcrypt": "^1.0.1",
    "classnames": "^2.2.5",
    "lib": "^1.0.5",
    "meteor-node-stubs": "~0.2.0",
    "particles.js": "^2.0.0",
    "react": "^15.4.1",
    "react-addons-pure-render-mixin": "^15.4.1",
    "react-dom": "^15.4.1",
    "react-mounter": "^1.2.0"
  }

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的代码必须在某处将forbidClientAccountCreation设置为true。您需要将该选项设置为false才能在客户端创建用户。

import { AccountsCommon } from 'meteor/accounts-base'

AccountsCommon.config({
  forbidClientAccountCreation: false
});