use*_*498 2 javascript base64 node.js
所以我想在页面上有电子邮件确认和其他内容,但将 userid 作为参数并不是最好的主意,所以我尝试用 base64 对其进行编码,但我很笨,出了问题,即使我没有收到任何错误,我的base64 编码的字符串看起来像这样:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(这里的证明:1),我收到弃用警告:(node:32320) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.,并且无缘无故我的数据库没有获得新帐户。这里是编码
app.get('/account/email_confirmation', async (req, res) => {
let temporary_user_id = req.session.temporary_user_id;
let buffer = new Buffer(temporary_user_id);
let base64 = buffer.toString('base64');
console.log(temporary_user_id, base64);
let email = {
from: process.env.EMAIL,
to: req.session.email,
subject: 'Your .whiteboard account confirmation',
text: `http://127.0.0.1:8000/confirm/${base64}`
};
transporter.sendMail(email, async (err, info) => {
if(err) throw err;
console.log(info.response);
let theme = await get_theme(req)
res.render('send_email', {theme: theme})
})
})
Run Code Online (Sandbox Code Playgroud)
这是解码:
app.get('/confirm/:userID', async (req,res) => {
let userID = req.params.userID;
let buffer = new Buffer(userID, 'base64');
let str = buffer.toString('ascii');
let query = "SELECT verified FROM verified WHERE id = ?;";
con.query(query, [str], async (err, result) => {
console.log('aaaaaaaaaaaa')
if(err) throw err;
console.log(result[0].verified);
if(result[0].verified == 0){
console.log('bbbbbbbbbbbbbbb')
query = 'UPDATE verified SET verified = 1 WHERE id = ?'
let theme = await get_theme(req);
con.query(query, [str], (err) => {
if(err) throw err;
res.render('confirm', {theme: theme});
})
}else{
res.redirect('/account/login');
}
})
})
Run Code Online (Sandbox Code Playgroud)
所以首先你已经使用了new Buffer,它已经被弃用了,所以我建议你使用它。
const base64data = Buffer.from('someText').toString('base64')
Run Code Online (Sandbox Code Playgroud)
并解码它只需使用
Buffer.from(base64data, 'base64').toString('ascii')
Run Code Online (Sandbox Code Playgroud)
就您的代码而言,它没有错误的base64转换是正确的,您的temporary_user_id可能存在问题,因为您会收到一些尴尬的文本,但转换是正确完成的。
只要这样做就可以解决问题。
JSON.stringify(temporary_user_id)
Run Code Online (Sandbox Code Playgroud)
您告诉错误的方式是因为它需要一个字符串,所以您必须将其转换为字符串。这将解决您的问题。
| 归档时间: |
|
| 查看次数: |
9292 次 |
| 最近记录: |