用户角色:node.js 表达续集 react.js

User roles: node.js express sequelize react.js

我在 bezkoder 上使用本教程来创建用户角色。但是,默认情况下,用户在注册期间被授予角色:1 [订阅者]。 我对此并不熟悉,所以我不确定要创建两个注册页面需要更改多少:一个会自动注册具有角色 1 [subscriber] 的用户,另一个会自动注册一个角色为 2 [expert].

的用户

前端 https://bezkoder.com/react-jwt-auth/

后端 https://bezkoder.com/node-js-jwt-authentication-mysql/

我认为角色在控制器中自动注册为 1,但我什至不确定这是记录角色的地方。非常感谢任何帮助。

exports.signup = (req, res) => {
  // Save User to Database
  User.create({
    username: req.body.username,
    email: req.body.email,
    password: bcrypt.hashSync(req.body.password, 8)
  })
    .then(user => {
      if (req.body.roles) {
        Role.findAll({
          where: {
            name: {
              [Op.or]: req.body.roles
            }
          }
        }).then(roles => {
          user.setRoles(roles).then(() => {
            res.send({ message: "User was registered successfully!" });
          });
        });
      } else {
        // user role = 1
        user.setRoles([1]).then(() => {
          res.send({ message: "User was registered successfully!" });
        });
      }
    })
    .catch(err => {
      res.status(500).send({ message: err.message });
    });
};

浏览完提供的前端教程后,我想我可以将问题缩小到组件 Authservice。它有一个名为 register:

的方法
  register(username, email, password) {
    return axios.post(API_URL + "signup", {
      username,
      email,
      password
    });
  }

因为目前您从未在用户注册时发送 角色。所以新用户总是以默认角色结束。如果您想在注册时为用户提供不同于默认角色的其他角色,则必须将参数 roles 添加到 [=30= 中的配置对象中]函数。例如像这样:

  register(username, email, password) {
    return axios.post(API_URL + "signup", {
      username,
      email,
      password,
      roles=[ "ROLE_ADMIN" ]
    });
  }

因此您可以创建另一个注册页面,您可以在其中使用此修改后的 register 函数而不是默认函数。