我们如何在带有express的nodeJS中实现管理面板?

问题描述 投票:1回答:1

我正在使用nodeJS和express开发一个Portfolio应用程序。我想实现一个管理面板,可以创建,删除,更新和编辑我的技能,经验,关于等内容,但是我不知道如何使这些管理路由保密以及进行哪种身份验证。通过将基本身份验证放在发布,补丁,删除路由上,然后我们将如何对路由实施基本身份验证。

// index.js

const express=require('express');
const app =express();
var cors = require('cors');

require('./db/mongoose')
const menuRouter=require('./routers/menu')
const skillRouter=require('./routers/skill')
const aboutRouter=require('./routers/About')
const experienceRouter=require('./routers/Experience')
const resumerouter=require('./routers/Resume')
const userRouter=require('./routers/user')
const port=process.env.PORT||4000;
app.use(express.json());
app.use(cors());

app.use(menuRouter);
app.use(skillRouter);
app.use(aboutRouter);
app.use(experienceRouter);
app.use(resumerouter);
app.use(userRouter)
app.listen(port,()=>
{
    console.log("Server is runing on port"+port)
});

// skill.js

const express=require('express');
const Skill = require('../model/skill');
const router = new express.Router();
router.post('/skill', async (req,res)=>
{
   const skill = new Skill(req.body);

try
{
  await skill.save();
  res.status(201).send(skill);
}catch(e)
{
console.log(e);
res.status(400).send(e);
}

})
router.get('/skill',async(rq,res)=>{

    try{
      const skill=await Skill.find({});
      res.status(201).send(skill);
    }catch(e)
    {
     res.status(400).send(e);
    }


  })

  module.exports=router;
javascript node.js express mongoose basic-authentication
1个回答
0
投票

用于检测登录用户是否为管理员的中间件?

在此示例中,通过电子邮件进行检查,您可以将adminemail保存为全局变量

ensureAdmin: function(req, res, next) {
    if (req.isAuthenticated()) {
      if (req.user.email === adminemail) {
        return next();
      } else {
        return res.redirect('/adminsecretroute');
      }
    }
    res.redirect('/');
  }
© www.soinside.com 2019 - 2024. All rights reserved.