Javascript 创建用户后重定向不起作用
所以前几天我在一个网站上工作,在那里我创建了一条路线来处理用户的注册过程。当我几天前测试它时,它工作得很好 然后我在我的网站上做了一些其他的东西(登录和个人资料网站等),当我回来测试一些其他东西时(我需要创建一个新的用户帐户,因为我添加了一些东西),注册不再有效 这是我的代码:Javascript 创建用户后重定向不起作用,javascript,node.js,express,redirect,Javascript,Node.js,Express,Redirect,所以前几天我在一个网站上工作,在那里我创建了一条路线来处理用户的注册过程。当我几天前测试它时,它工作得很好 然后我在我的网站上做了一些其他的东西(登录和个人资料网站等),当我回来测试一些其他东西时(我需要创建一个新的用户帐户,因为我添加了一些东西),注册不再有效 这是我的代码: app.post('/signup', (req, res) => { if (!req.body.accept) { res.redirect('/signup?error=must_accept')
app.post('/signup', (req, res) => {
if (!req.body.accept) {
res.redirect('/signup?error=must_accept')
}
// E-Mail exists in database
connection.query('SELECT LogMail FROM u WHERE LogMail = ?;', req.body.mail, function(err, rows, fields) {
if (err) throw err;
if (rows.length > 0) {
console.log('this email exists already')
} else {
key_pair = generate_key_pair()
datetime = getDateTime()
user = {
ID_u: generate_ID(),
Created: datetime,
LogMail: req.body.mail,
Verified: '0000-00-00 00:00:00',
Password: hash_password(req.body.password),
Token: generate_token(),
PrivKey: encrypt_private_key(key_pair.private_key, req.body.password),
PubKey: key_pair.public_key,
Cookies: datetime,
TermsOfUse: datetime,
PrivacyPolicy: datetime,
}
let value = [
[
user.ID_u,
user.Created,
user.LogMail,
user.Verified,
user.Password,
user.Token,
user.PrivKey,
user.PubKey,
user.Cookies,
user.TermsOfUse,
user.PrivacyPolicy,
]
]
decrypted_private_key = decrypt_private_key(user.PrivKey, req.body.password)
req.session.mail = user.LogMail
req.session.token = user.Token
req.session.private_key = decrypted_private_key
console.log(decrypted_private_key)
if (req.body.stay) {
res.cookie('mail', user.LogMail, {
maxAge: 1000 * 86400 * 14,
httpOnly: true
});
res.cookie('token', user.Token, {
maxAge: 1000 * 86400 * 14,
httpOnly: true
});
res.cookie('private_key', decrypted_private_key, {
maxAge: 1000 * 86400 * 14,
httpOnly: true
})
}
connection.query('INSERT INTO u (ID_u, Created, LogMail, Verified, Password, Token, PrivKey, PubKey, Cookies, TermsOfUse, PrivacyPolicy) VALUES (?)', value, (err, rows, fields) => {
if (err) throw err
})
res.redirect('/profile') // THE SCRIPT BREAKS HERE
return
}
})
})
当我现在通过单击/signup页面上的submit按钮调用此路由时,代码运行到标记点(带有“脚本在此中断”的点),然后我的浏览器只显示502坏网关,但URL没有更改为/profile,浏览器只显示此消息
我也没有在控制台中得到任何错误代码或任何东西,它只是在那里中断,如果我在
res.redirect('/profile')
和return
之前或之间执行console.log,那么它会被打印到控制台,但我没有得到任何错误,我也不知道这是什么,在这种情况下,我甚至无法在谷歌上搜索到什么…我想我现在已经找到了答案(但我会为我获取你的任何新信息)
问题似乎是,我试图将整个RSA私钥放入cookie中,而大多数浏览器似乎无法处理
这似乎与cookie可以存储的数据量有关。在大多数浏览器上,cookie可以存储4096个字节左右,但RSA私钥似乎占用了更多空间(即使strlen函数给了我3433个字符(我假设也是3433个字节,至少我记得ASCII和Unicode)
请添加一个评论,如果你有任何想法,无论我的建议是正确的,或者如果它是由其他原因造成的
除了将RSA密钥拆分并保存在两个单独的Cookie中之外,还有更好的方法存储RSA密钥吗?是否正确地将记录插入数据库?是的,数据显示在数据库中,每次我进行另一次测试时,我都必须删除记录,因为有一条记录包含该电子邮件,当我查找时,其他数据看起来也不错,我发现,它与行有关,我在其中设置了
res.cookie('private_key',…)
。当我把它注释掉时,我-至少-被重定向到要求的站点,但我不知道它有什么问题是的,cookies的大小是有限的:好的,但是当我将字符串一分为二(1717字节而不是3434字节)并将它们保存在两个cookies中时,它仍然不会保存它们,崩溃仍在发生,我似乎找不到解决办法……你读了第一个答案下面的评论了吗?浏览器对集Cookie:
头的大小也有限制。