node.js中的授权

时间:2017-03-25 11:05:57

标签: node.js authentication mongoose authorization

编辑新闻网站时,我试图进行授权,以便只有作者(发布文章的人)能够编辑和删除它(这些按钮显示在页面底部,对所有人都可见用户)。

但是有些新闻/网站没有登录/注册选项。例如:http://www.denofgeek.com/us。 因为他们没有身份验证,这是否意味着他们没有授权? 如果作者的设置与其他用户相同,他们如何编辑/删除文章?

代码:

app.get("/blog/:id/:title/edit", function(req,res) {
Blog.findById(req.params.id, function(err, foundBlog) {
    if(err) {
        res.redirect("/blog");
    } else {
        res.render("editBlog", {blog : foundBlog});
    }
  })
})

//UPDATE BLOG
app.put("/blog/:id/:title", function(req,res) {
    req.body.blog.body = req.sanitize(req.body.blog.body);
    Blog.findByIdAndUpdate(req.params.id, req.body.blog,{new: true}, function(err,updatedBlog) {
        if(err) {
            res.redirect("/blog");
        } else {
            res.redirect("/blog/" + req.params.id + "/" + req.params.title);
        }
    })
})

如果我不想使用身份验证,我应该如何编辑/删除文章?

P.S:当然,我可以删除页面上出现的编辑和删除按钮,并通过邮递员发送PUT和DELETE请求,但这显然是个坏主意!

1 个答案:

答案 0 :(得分:1)

在浏览过网站之后,你提到了一个用户和一个用于管理员的网站,作者可以登录并进行更新添加新帖子并删除旧帖子。

如果没有任何身份验证,您就无法对特定用户进行编辑/删除。

所以你应该这样做,就像为作者创建一个单独的面板并设置一个登录页面,这样只有授权人才能进入页面,你可以实现删除/更新的功能,即使我建议你使用授权因此,如果有人了解您的api,他们无法进行编辑,直到他们有令牌,您可以使用此jsonwebtoken来实施授权。

希望这会有所帮助。