【问题标题】:Authorization in node.jsnode.js 中的授权
【发布时间】:2017-03-25 11:05:56
【问题描述】:

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

但有些新闻/网站没有登录/注册选项。例如: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 : 当然,我可以删除页面上出现的编辑和删除按钮,并通过 Postman 发送 PUT 和 DELETE 请求,但这显然是个坏主意!

【问题讨论】:

    标签: node.js authentication mongoose authorization


    【解决方案1】:

    浏览您提到的网站后,有一个供用户使用,另一个供管理员使用,作者可以登录并进行更新,添加新帖子并删除旧帖子一次。

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

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

    希望这会有所帮助。

    【讨论】:

    • 如果他们甚至没有登录/注册按钮,他们如何为用户和管理员设置不同的设置?您的意思是说他们可能是另一个仅适用于作者的域(如 admin.denofgeek.com)?上帝...我什至不知道从哪里开始!我已经设置了身份验证(通过护照),但我在授权部分遇到了问题!
    • 是的,只是你不需要创建另一个域,你可以创建一个像 link 这样的 url,在那里你可以使用用户名和密码进行身份验证,成功检查后你可以让作者可见他们可以编辑/删除帖子的那些部分。
    • 如果可能的话,你能邀请我到 SO 上的一个聊天室,这样当我觉得卡在这个管理界面的事情上时,我可以问你吗?评论很痛苦。
    • @eknoor4197 如果您遇到任何问题,我们需要做更多的 cmets 才能做到这一点,您只能在这里提问。
    • 可能有一个选项可以在你的页脚中创建一个聊天室,我没有那个,因为我的声誉低于 100。无论如何,我明天会问你我的疑问。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2013-01-01
    • 2021-10-17
    • 2021-10-19
    相关资源
    最近更新 更多