Express.js:发帖时获取用户的推荐网址

时间:2016-05-14 13:08:28

标签: javascript ajax node.js post express

所以我想为我的网站创建一个评论系统,并且为了知道评论的页面(例如,用户已经上传的特定视频),我不知何故需要获取用户的页面的网址目前正在进行评论时(以便我知道如何将其保存在数据库中)。

路线是这样的: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)。

有办法吗?

非常感谢。

2 个答案:

答案 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.
};

sha256 function

var crypto = require('crypto');

function sha256(data) {
    return crypto.createHash("sha256").update(data).digest("base64");
}