2017-03-25 52 views
1

对新闻网站进行编码,我试图进行授权,以便只有作者(发布文章的人)能够编辑和删除它(这些按钮出现在页面的底部,并且是所有用户都可以看到)。node.js中的授权

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

回答

1

虽然去你提到的网站有一个为用户和一个是管理员分开作者可以登录和更新添加新的职位,删除旧的一次。

这是不可能的,没有任何身份验证,你可以编辑/删除特定用户。

所以你应该这样做,就像为作者创建一个单独的面板并为其设置一个登录页面,这样只有授权人员才能进入该页面,并且在那里你可以实现删除/更新的功能,即使我会建议你使用授权,所以如果任何人知道您的apis,他们不能编辑,直到他们有令牌,你可以使用此jsonwebtoken来实现授权。

希望这会有所帮助。

+0

如果用户和管理员甚至没有登录/注册按钮,他们如何设置不同的用户和管理员?你的意思是说他们可能是另一个域名(如admin.denofgeek.com),这是仅供作者使用的吗?上帝......我甚至不知道从哪里开始!我有认证(通过护照)设置,但我在授权部分遇到问题! – eknoor4197

+0

是的,就像那样,只有你不需要创建另一个域名,你可以创建一个类似于[link](http://www.denofgeek.com/admin)的URL,你可以使用userName和password进行身份验证,并且在成功检查你可以让作者看到他们可以编辑/删除帖子的部分。 –

+0

如果可能的话,你可以邀请我到SO上的聊天室,以便我可以问你什么时候我觉得卡在这个管理界面的东西?评论是一个痛苦。 – eknoor4197