Node
[#. Node] 관리자 패널, 대시보드를 제공하는 Admin Dashboard AdminBro admin login 관리자 로그인 authentication 3
shab
2021. 1. 21. 16:50
반응형
localhost:8000/admin에 들어가면 이렇게 바로 사이드바에서 모델을 확인할 수 있었다
하지만 admin으로 로그인을 하고 권한이 있어야 모델들을 확인하고 CRUD를 할 수 있어야 한다
관리자 계정을 생성하고 로그인해야 대시보드에 접근할 수 있게 해보자
adminbro.com/tutorial-rbac.html
An Auto-generated Admin Panel for your Node.js Application
You, as a developer, provide database models, and AdminBro generates ReactJS UI which allows you (or other trusted users) to manage content.
adminbro.com
08. Role-Based Access Control 을 참고했다
=> 참고하긴 했지만 다른 방법으로 설정했다
① index.js ADMIN 정보 추가, router 수정
const ADMIN = {
email: 'admin@a.aa',
password: '12341234'
};
const router = AdminBroExpress.buildAuthenticatedRouter(adminBro, {
authenticate: async (email, password) => {
if (ADMIN.password === password && ADMIN.email === email) {
return ADMIN
}
return null
},
cookieName: 'adminBro',
cookiePassword: 'testtest'
});
index.js 전체 코드
const express = require("express");
const app = express();
const path = require("path");
const cors = require('cors')
const AdminBro = require('admin-bro')
const AdminBroExpress = require('@admin-bro/express')
const AdminBroMongoose = require('@admin-bro/mongoose') // 추가
const User = require('./models/User') // 추가
const config = require("./config/key"); // mongoDB 설정 파일
const mongoose = require("mongoose");
const connect = mongoose.connect(config.mongoURI,
{
useNewUrlParser: true, useUnifiedTopology: true,
useCreateIndex: true, useFindAndModify: false
})
.then(() => console.log('MongoDB Connected...'))
.catch(err => console.log(err));
AdminBro.registerAdapter(AdminBroMongoose) // 추가
const adminBro = new AdminBro({
databases: [ mongoose ] // 수정
})
const ADMIN = {
email: 'admin@a.aa',
password: '12341234'
};
const router = AdminBroExpress.buildAuthenticatedRouter(adminBro, {
authenticate: async (email, password) => {
if (ADMIN.password === password && ADMIN.email === email) {
return ADMIN
}
return null
},
cookieName: 'adminBro',
cookiePassword: 'testtest'
});
app.use(adminBro.options.rootPath, router)
const port = process.env.PORT || 5000
app.listen(port, () => {
console.log(`Server Listening on ${port}`)
});
이전 글에서와 달리 Admin Model은 뺐다
설정이 끝났다
이렇게 로그인하면 대시보드에 접근이 가능하고 Model 확인, CRUD가 가능하고 오른쪽 상단에서 로그아웃도 가능하다
반응형