在 更新内容 还有 删除内容 接口上可以用一下 accessControl() 中间件检查用户是不是拥有要访问的资源,就是检查要访问的内容是不是这个用户自己发布的,如果是,就允许更新或者删除内容,如果不是,用户就会收到一个状态码是 403 的响应。
打开 src/post/post.router,在这个文件里,可以先从 auth.middleware 里面,把 accessControl 导入进来。这个中间件要配合 authGuard 一块儿用,所以也要把这个 authGuard 导入进来。
找到 更新内容 这个接口,在它上面可以安排两个中间件,一个是 authGuard ,然后再添加一个 accessControl,使用这个中间件的时候可以给它提供一个选项参数,要验证用户对资源的拥有权,可以把 possession 设置成 true。
注意中间件的顺序很重要,先要使用 authGuard 验证用户登录状态,然后再使用这个 accessControl。 复制一下,再把这两个中间件,用在 删除内容 这个接口上。