我是第一次使用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”中并存储在本地存储中?
当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
大!欢迎来到现代堆栈开发:)
我承认-我的原始答案可能令人困惑。所以:
在您的示例中,我仅使用您的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] 删除。
我来说两句