Node.js 如何在MEAN stack应用程序中创建具有最高访问权限的超级用户?

Node.js 如何在MEAN stack应用程序中创建具有最高访问权限的超级用户?,node.js,angularjs,typescript,express,mean-stack,Node.js,Angularjs,Typescript,Express,Mean Stack,我正在用MEAN stack建立一个书评网站,用户可以在这里发布关于书籍的信息。用户只能编辑和删除他/她创建的帖子,这意味着我的授权已经完成,并且工作正常 但现在我想要实现的是一个超级用户。我正在尝试创建一个超级用户,无论是谁创建的,都可以编辑和删除任何帖子。我需要这个,以便我可以监测是否有人张贴任何不良内容 为了前端的授权目的,我使用了一个拦截器类,它截取从服务类发送的所有http请求。拦截器如下所示 import { HttpInterceptor, HttpRequest, HttpHan

我正在用MEAN stack建立一个书评网站,用户可以在这里发布关于书籍的信息。用户只能编辑和删除他/她创建的帖子,这意味着我的授权已经完成,并且工作正常

但现在我想要实现的是一个超级用户。我正在尝试创建一个超级用户,无论是谁创建的,都可以编辑和删除任何帖子。我需要这个,以便我可以监测是否有人张贴任何不良内容

为了前端的授权目的,我使用了一个拦截器类,它截取从
服务
类发送的所有
http
请求。
拦截器
如下所示

import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
import { AuthService } from './auth-service';
import { Injectable } from '@angular/core';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

  constructor(private authService: AuthService) {}

  intercept(req: HttpRequest<any>, next: HttpHandler) {
    const authToken = this.authService.getToken();
    const authRequest = req.clone({
      headers: req.headers.set('Authorization', 'Bearer ' + authToken)
    });
    return next.handle(authRequest);
  }
}
const jwt = require("jsonwebtoken");

module.exports = (req, res, next) => {
  try {
    const token = req.headers.authorization.split(" ")[1];
    const decodedToken = jwt.verify(token, "E8PbieHoNk");
    req.userData = {email: decodedToken.email, userId: decodedToken.userId};
    next();
  } catch (error) {
      res.status(401).json({
        message: 'You are not authorized !'
      });
  }
};
此处给出了删除的控制器方法

exports.deletePost = (req, res, next) => {
  Post.deleteOne({ _id: req.params.id, creator: req.userData.userId }).then(result => {
    console.log(req.params.id);
    console.log(result);
    if(result.n > 0) {
      res.status(200).json({message: "Post deleted"});
    } else {
      res.status(401).json({message: "You Unauthorized"});
    }
  })
  .catch(error => {
    res.status(500).json({
      message: "Deleting a post failed !"
    });
  });
}
一切都很好

现在,为了让超级用户能够删除任何帖子,我尝试了将其
userId
添加到
check auth.js
中间件中,并在controller method for
deletion
中检查是否是帖子创建者用户本人或超级用户,因为我希望两者都能删除。但它没有起作用

这是我试过的

exports.deletePost = (req, res, next) => {
  if(req.userData.userId === '5c8cd83a6efff92cf85bd6eb') {
    Post.deleteOne({ _id: req.params.id, creator: req.userData.userId }).then(result => {
      console.log(req.params.id);
      console.log(result);
      if(result.n > 0) {
        res.status(200).json({message: "Post deleted"});
      } else {
        res.status(401).json({message: "You Unauthorized"});
      }
    })
    .catch(error => {
      res.status(500).json({
        message: "Deleting a post failed !"
      });
    });
  } else {
    Post.deleteOne({ _id: req.params.id, creator: req.userData.userId }).then(result => {
      console.log(req.params.id);
      console.log(result);
      if(result.n > 0) {
        res.status(200).json({message: "Post deleted"});
      } else {
        res.status(401).json({message: "You Unauthorized"});
      }
    })
    .catch(error => {
      res.status(500).json({
        message: "Deleting a post failed !"
      });
    });
  }
}
在此,具有最高访问权限的用户id是
5c8cd83a6efff92cf85bd6eb
。我想当他登录时,delete方法会从
jsonwebtoken
中间件
check auth
中获取这个
id
,然后让他删除。这就是我试过的

对这个问题提供一些关于更好的实践的线索将意味着很大的帮助。我已经提供了上述所有可能的细节

谢谢你的时间和努力