使用授权保护MEAN Stack中的资源

17 Mar 2025 | 阅读 2 分钟

在上一节中,我们成功地将创建者ID添加到我们的帖子中。 简单来说,我们在用户和帖子之间建立了连接,并将数据返回到前端。 在本节中,我们将利用此连接来拒绝删除或编辑帖子,如果它们是由未创建该帖子的用户发出的。 我们将使用以下步骤来执行此操作

1) 我们将返回到我们的posts.js文件,其中有路由的put和delete方法。 在put方法中,我们确保只有创建帖子的用户才能编辑它。 在这里,我们仅在帖子由登录的用户创建时才调用Post.updateOne()方法。 做到这一点的简单方法是,我们将另一个参数添加到我们拥有的条件中。 我们将在此处检查创建者字段。 创建者字段应等于请求中userData的userId。


Protecting Resources with Authorization in MEAN Stack

2) updateOne()方法返回结果,此结果包含一个属性,即 nModified。 此属性返回更新记录的计数。 因此,我们将使用此变量来检查帖子是否会成功更新。 如果它的值大于零,那么我们将返回旧的响应。 否则,我们将发送不同的响应,即 401 状态码,以表明用户无权执行此操作。


Protecting Resources with Authorization in MEAN Stack

现在,我们将保存所有文件并返回到我们的angular应用程序。 如果我们尝试从其他帐户更新Saakshi的帖子,则会收到“未授权”错误。

Protecting Resources with Authorization in MEAN Stack
Protecting Resources with Authorization in MEAN Stack

3) 现在,我们将对删除帖子使用相同的逻辑。 我们将返回到路由器的delete()方法,并对 deleteOne() 执行相同的操作。 我们在JavaScript对象中添加了与在updateOne()中使用的相同的条件。


Protecting Resources with Authorization in MEAN Stack

4) 我们将简单地复制更新方法的结果处理,并将其粘贴到删除方法中,因为在这里,我们也会得到nModified属性,该属性存储将被删除的帖子的计数。


Protecting Resources with Authorization in MEAN Stack

我们保存所有文件并返回到我们的应用程序,以检查它是否有效。

Protecting Resources with Authorization in MEAN Stack

一切运行良好。 在本节中,我们将userId传递到前端,以便也可以在前端使用它。