首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在admin中使用现有api和控制器登录

在admin中使用现有api和控制器登录
EN

Stack Overflow用户
提问于 2021-02-25 08:28:50
回答 1查看 1.2K关注 0票数 1

我的项目(nodejs后端)需要一些项目的基本CRUD功能:大陆、国家等。

我正在创建一个管理仪表板,我找到了用于创建仪表板的。但是,由于这将在实时服务器中,所以我还需要创建身份验证。

我已经创建了身份验证api,并具有良好的目录结构。

如图所示,我已经在routes.js文件中拥有了所需的所有apis

代码语言:javascript
复制
const express             = require('express');
const router              = express.Router();
const authController      = require('../api/v1/controllers/auth.controller');
const counrtyController   = require('../api/v1/controllers/country.controller')
const adminController     = require('../api/v1/controllers/admin.controller');

// rendering admin pages
router.get('/Admin/Login', authController.renderLoginView);
router.get('/admin/Dashboard', adminController.renderDashboardView);

// API End Points for admin auth and new admin register and signout
router.post('/api/v1/auth/login', authController.login);
router.post('/api/v1/auth/register', authController.register);
router.post('/api/v1/auth/signout', authController.signout);

// API endpoints for countries(get all, get one, add one, delete one, edit one)
router.post('/api/v1/countries/addOne', counrtyController.addOne);
router.get('/api/v1/countries/getAll', counrtyController.listAll);
router.get('/api/v1/countries/:country_name', counrtyController.listOne);
router.put('/api/v1/countries/:country_name', counrtyController.updateOne);
router.delete('/api/v1/countries/:country_name',counrtyController.deleteOne);
module.exports            = router;

这是我在routes.js文件中的一些api

每个api调用一个特定的控制器,控制器中包含所有的逻辑。

现在我的问题是,我想使用我现有的身份验证来进入仪表板。我该换什么?

我将保留apis,因为在将来,我将把管理仪表板带到前端,我需要get方法来显示有关大陆/国家的信息。

现在我可以注释掉所有的post/put/delete方法。

我接下来该怎么办?

这就是我在admin.route.js里面的东西

代码语言:javascript
复制
const AdminBro          = require('admin-bro');
const AdminBroExpress   = require('@admin-bro/express');
const AdminBroMongoose  = require('@admin-bro/mongoose');

const mongoose          = require('mongoose');

AdminBro.registerAdapter(AdminBroMongoose);

const Country           = require('../models/country.model');
const Continent         = require('../models/continent.model');
const Visa              = require('../models/visa.model');


const adminBro = new AdminBro({
    resources: [
        {
            resource: Continent,
            options: {
                parent: {
                    name: 'Continent'
                }
            }
        },
        {
            resource: Country,
            options: {
                parent: {
                    name: 'Country'
                }
            }
        },
    ],
    rootPath: '/admin',
})

const adminBroRouter = AdminBroExpress.buildRouter(adminBro)

module.exports = adminBroRouter;

在我的index.js里:

代码语言:javascript
复制
const express           = require('express');
const app               = express();
const mongoose          = require('mongoose');
const dotenv            = require('dotenv');
const bodyParser        = require('body-parser');
const engine            = require('./config/view.engine');
const router            = require('./routes/routes');
const session           = require('express-session');
const adminRouter       = require('./routes/admin.route');

// Middlewares
app.use(session({secret: 'mysupersecret', saveUninitialized: true, resave: true}));
app.use(bodyParser.urlencoded({extended: true}))
app.use(express.json());
app.use('/', router);


// connect to db
dotenv.config();
mongoose.connect(
    process.env.DB_CONNECT,
    {
        useUnifiedTopology: true,
        useNewUrlParser: true
    },
    () => console.log("connected to db")
);

// use engine for views
engine(app);

app.use('/admin', adminRouter);
app.get("/", (req, res) =>{
    res.send("This route wont return anything")
});

const PORT            = process.env.PORT || 5000
app.listen(PORT, () => console.log("server up and running"));

几个小细节:我的登录页面应该是/Admin/登录,仪表板应该是/Admin/Dashboard

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-28 07:51:21

这个很有帮助。我必须编写定制的auth控制器和路由,而不是使用buildAuthenticatedRouter()。

防火墙的自定义登录页面

对于我来说,使用mongodb地图集进行了一些定制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66364887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档