[英]Using roles and specific user id to limit what sections can be viewed in react / node / express / mysql?
我正在使用 MySQL、express、react、node 创建一个 Web 应用程序,这是我第一次使用 JavaScript。 我之前使用过会话,当我使用 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' 中并存储在本地存储中吗?
当 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、express、react、node 创建一个 Web 应用程序,这是我第一次使用 JavaScript
伟大的! 欢迎来到现代堆栈开发:)
我承认 - 我最初的回答可能令人困惑。 所以:
在您的示例中,我只是使用您的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
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.