我在登录后路由器中有一个数据库操作,当数据库操作回调成功时,我得到一个用户名值,如何将此用户名传递给“/”路由器?
router.post('/login', (req, res)=> {
var username = req.body.username;
var password = common.md5(req.body.password + common.MD5_SUFFIX);
db.query(`SELECT * FROM admin_table WHERE username='${username}'`, (err, data)=> {
if (err) {
console.log(err);
res.status(500).send('database error').end();
} else {
if (data.length == 0) {
res.status(404).send('no this admin').end();
} else {
if (data[0].password == password) {
req.session['admin_id']=data[0].ID;
res.redirect('/');
} else {
res.status(404).send('This password is not incorrect!').end();
}
}
}
});
});
router.get('/login',(req,res)=>{
res.render('admin/login.ejs',{layout:'/admin/layout.ejs',title:'Login'});
});
router.get('/',(req,res)=>{
res.render('admin/index.ejs',{layout:'/admin/layout.ejs',title:'Index',username:username});
});
例如在登录路由器后,我得到的用户名是“ollie”,当数据库操作结束时,路由器重定向“/”,我可以在“/”路由器中得到用户名“ollie”。
最佳答案
最简单的方法是使用 session 。例如。在配置 Express 应用程序的位置,请使用以下命令:
if (data[0].password == password) {
req.session['admin_id']=data[0].ID;
req.session.username = data.username;
res.redirect('/');
}
然后您就可以访问它,例如
router.get('/route', (req, res) => {
console.log(req.session && req.session.username);
res.end(`Hi ${req.session && req.session.username}`)
});
请、请、请不要在任何身份验证方案中使用 md5,甚至是示例代码。
关于node.js - 如何使用express将参数 “username”传递到 "/"路由器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669320/