所以我想为我的网站创建一个评论系统,并且为了知道评论的页面(例如,用户已经上传的特定视频),我不知何故需要获取用户的页面的网址目前正在进行评论时(以便我知道如何将其保存在数据库中)。
路线是这样的:app.get('/video/:videoId', function(req, res){...})
所以视频网址就像:/video/98ux8987s987f9xc89v3wjgrkgh32
。
当用户发布评论时,我需要获取网址的最后一部分。 我不想发送网址和评论(在ajax POST功能中),因为他们可以更改它!
顺便说一下,我不需要url post url(如果我在post函数中有req.url
之类的东西,我只会得到帖子网址:app.post('/comment', function(req, res){console.log(req.url)}
如果我这样做,我会得到/comment
)。
有办法吗?
非常感谢。
答案 0 :(得分:0)
我不确定我是否得到你,但这是你的意思吗?
app.post('/comment/:videoId', function(req, res) {
console.log(req.params.videoId)
}
videoId参数位于req.params.videoId。
答案 1 :(得分:0)
您可以使用网址添加哈希值,但它不是不可阻挡的。在 videoKey 中,您可以添加日期或用户ID。
var secretkey = "4658{=#mkZl"; // The user doesn't know this string, and he can't make videoKey.
app.get('/video/:videoId', function(req, res){
res.render('video', {
videoId: req.params.videoId,
videoKey: sha256(secretkey + req.params.videoId + secretkey);
});
};
以html格式:
<form action="/comment">
<input type="hidden" name="videoId" value="{videoId}" />
<input type="hidden" name="videoKey" value="{videoKey}" />
</form>
评论功能:
var secretkey = "4658{=#mkZl";
app.post('/comment', function(req, res){
if (req.body.videoKey == sha256(secretkey + req.body.videoId + secretkey))
//ok the user got video page, before he comments.
};
var crypto = require('crypto');
function sha256(data) {
return crypto.createHash("sha256").update(data).digest("base64");
}