使用角色和特定的用户ID来限制可以在react / node / express / mysql中查看哪些部分?

吉保吉

我是第一次使用JavaScript创建使用MySQL的Web应用程序,表达,反应,节点及其。在使用PHP完成项目之前,我曾经使用过会话,但是在理解如何添加基于角色的访问或特定于特定用户的访问时遇到了麻烦。

我目前在前端的代码是:

export const login = user => {
    return axios
        .post('users/login', {
            userName: user.userName,
            password: user.password,
        })
        .then(res => {
            localStorage.setItem('usertoken', res.data);
            return res.data
        })
        .catch(err => {
            console.log(err)
        })
}; 

在后端。

// login
users.post('/login', (req, res) => {
    User.findOne({
            where: {
                userName: req.body.userName
            }
        })
        .then(user => {
            if (bcrypt.compareSync(req.body.password, user.password)) {
                let token = jwt.sign(user.dataValues, process.env.SECRET_KEY, {
                    expiresIn: 1440
                })
                res.json({
                    token: token
                })
            } else {
                res.send('User doesnt exist')
            }
        })
        .catch(err => {
            res.send('error: ' + err)
        })
});

当jwt令牌发回时,我将如何使用Express从MySQL数据库请求/返回用户类型/ user_id?用户类型和user_id是否将存储在JWT的“ usertoken”中并存储在本地存储中?

z

当jwt令牌发回时,我将如何使用Express从MySQL数据库请求/返回用户类型/ user_id?

        if (bcrypt.compareSync(req.body.password, user.password)) {
            // place your query here - use `username` as a key to get user row
            // store results in user object, then:
            let token = jwt.sign(user.dataValues, process.env.SECRET_KEY, {
                expiresIn: 1440
            })
            res.json({
                token: token
            })

用户类型和user_id是否将存储在JWT的“ usertoken”中并存储在本地存储中?

只要不是敏感数据,您就可以安全。请注意,由于采用了加密,即使传递敏感数据也可以确保安全,但是-这不是一个好习惯(仅将必须返回的内容发送回JWT中存储的用户)

我第一次使用MySQL创建Web应用程序,表达,反应,结点以及它,这是我第一次使用JavaScript

大!欢迎来到现代堆栈开发:)

编辑:

我承认-我的原始答案可能令人困惑。所以:

  • 根据经验-永远(永远不会)在您的前端项目中编写sql查询(出于安全考虑)
  • 您的后端应管理与数据库的连接(大多数情况下,每个数据库应使用一个连接)
  • 使用查询数据库的Api条目扩展后端。允许这些条目接受查询参数和/或请求标头
  • 使用特定的查询参数调用您的api以查询您的数据库

在您的示例中,我仅使用您的login条目来放置查询。由于您正在使用mysql,请考虑使用第三方库来帮助您(例如mysql2

最终,它应该看起来像这样:

    if (bcrypt.compareSync(req.body.password, user.password)) {
        connection.query('SELECT * FROM `users` WHERE `name` = ?', ['user name to query' ], function(err, results) {
        if (err) return res.send('error: ' + err)

        let token = jwt.sign(user.dataValues, process.env.SECRET_KEY, {
            expiresIn: 1440
        })
        res.json({
            token: token
        })

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

限制Node JS Express中的api访问

来自分类Dev

无法使用Express / Node从mysql结果中获取价值

来自分类Dev

使用Node.js(Express)和mySQL插入TIMESTAMP?

来自分类Dev

如何使用ejs模板而不是node.js中的express.static内容查看索引页?

来自分类Dev

使用Express和Passport JS重定向Node中的路由

来自分类Dev

当使用MySql,express,angular,nodejs时,express和node的端口会有所不同

来自分类Dev

更新Node js + Express + Passport + MongoDB中的用户记录

来自分类Dev

在Node / Express中基于JWT为用户获取数据

来自分类Dev

Express / Node 中的阻塞问题

来自分类Dev

是否可以在Node / Express 4.0中声明全局变量

来自分类Dev

是否可以在Node / Express 4.0中声明全局变量

来自分类Dev

Node 和 Express 发送 json

来自分类Dev

拒绝访问Node.js Express中的特定目录

来自分类Dev

在 WebStorm 中配置端口 - React + Node Express 应用程序

来自分类Dev

Node.js和Express中的活动菜单项

来自分类Dev

Node和Express中的Rest API,与ejs和React.js一起使用

来自分类Dev

如何查看Node Express中的所有响应标头?

来自分类Dev

如何使用Express关闭Node.js中的HTTP连接

来自分类Dev

使用Promise处理Node.js + Express中的错误

来自分类Dev

从浏览器(使用Express)在Node js中调用方法

来自分类Dev

如何使用aws-amplify在node / express中验证accessToken?

来自分类Dev

使用 $PUSH 更新在 Mongoose + Express + Node 中不起作用

来自分类Dev

如何使用Node JS和Express在MySQL数据库中存储PDF

来自分类Dev

有没有办法限制Node(Express)中的速度和响应时间?

来自分类Dev

如何使用Express模块限制对node.js中许多文件夹的访问

来自分类Dev

如何使用express模块限制对node.js中许多文件夹的访问

来自分类Dev

使用Express,Mongodb作为服务器数据库的Node.js中的用户管理

来自分类Dev

如何使用Node.js和Express在MySQL中使用多个变量进行选择*?

来自分类Dev

Node.js,Express,护照可以移动

Related 相关文章

  1. 1

    限制Node JS Express中的api访问

  2. 2

    无法使用Express / Node从mysql结果中获取价值

  3. 3

    使用Node.js(Express)和mySQL插入TIMESTAMP?

  4. 4

    如何使用ejs模板而不是node.js中的express.static内容查看索引页?

  5. 5

    使用Express和Passport JS重定向Node中的路由

  6. 6

    当使用MySql,express,angular,nodejs时,express和node的端口会有所不同

  7. 7

    更新Node js + Express + Passport + MongoDB中的用户记录

  8. 8

    在Node / Express中基于JWT为用户获取数据

  9. 9

    Express / Node 中的阻塞问题

  10. 10

    是否可以在Node / Express 4.0中声明全局变量

  11. 11

    是否可以在Node / Express 4.0中声明全局变量

  12. 12

    Node 和 Express 发送 json

  13. 13

    拒绝访问Node.js Express中的特定目录

  14. 14

    在 WebStorm 中配置端口 - React + Node Express 应用程序

  15. 15

    Node.js和Express中的活动菜单项

  16. 16

    Node和Express中的Rest API,与ejs和React.js一起使用

  17. 17

    如何查看Node Express中的所有响应标头?

  18. 18

    如何使用Express关闭Node.js中的HTTP连接

  19. 19

    使用Promise处理Node.js + Express中的错误

  20. 20

    从浏览器(使用Express)在Node js中调用方法

  21. 21

    如何使用aws-amplify在node / express中验证accessToken?

  22. 22

    使用 $PUSH 更新在 Mongoose + Express + Node 中不起作用

  23. 23

    如何使用Node JS和Express在MySQL数据库中存储PDF

  24. 24

    有没有办法限制Node(Express)中的速度和响应时间?

  25. 25

    如何使用Express模块限制对node.js中许多文件夹的访问

  26. 26

    如何使用express模块限制对node.js中许多文件夹的访问

  27. 27

    使用Express,Mongodb作为服务器数据库的Node.js中的用户管理

  28. 28

    如何使用Node.js和Express在MySQL中使用多个变量进行选择*?

  29. 29

    Node.js,Express,护照可以移动

热门标签

归档