다음과 같이 데이터베이스 접속이나 OAuth2 인증에 필요한 변수들을 정의하여 따로 파일로 보관할 수 있습니다.
SSO_DATABASE_URL=...
SSO_GITHUB_CLIENT_ID=...
SSO_GITHUB_CLIENT_SECRET=...
SSO_GITHUB_CODE_REDIRECT_URL=...
SSO_GITHUB_TOKEN_REDIRECT_URL=...
SSO_GITLAB_CLIENT_ID=...
SSO_GITLAB_CLIENT_SECRET=...
SSO_GITLAB_CODE_REDIRECT_URL=...
SSO_GITLAB_TOKEN_REDIRECT_URL=...
SSO_JWT_SECRET=...
SSO_COOKIE_SECRET=...
다음과 같이 dotenv 라이브러리를 사용하여 .env 파일에 있는 값들을 불러올 수 있습니다. 원하는 object 형태로 정리하여 사용할 수 있습니다.
const dotenv = require("dotenv");
dotenv.config();
const config = {
port: process.env.PORT || 3001,
db: {
url: process.env.SSO_DATABASE_URL
},
sso: {
github: {
clientId: process.env.SSO_GITHUB_CLIENT_ID,
clientSecret: process.env.SSO_GITHUB_CLIENT_SECRET,
codeRedirectUrl: process.env.SSO_GITHUB_CODE_REDIRECT_URL,
tokenRedirectUrl:process.env.SSO_GITHUB_TOKEN_REDIRECT_URL,
},
gitlab: {
clientId: process.env.SSO_GITLAB_CLIENT_ID,
clientSecret: process.env.SSO_GITLAB_CLIENT_SECRET,
codeRedirectUrl: process.env.SSO_GITLAB_CODE_REDIRECT_URL,
tokenRedirectUrl:process.env.SSO_GITLAB_TOKEN_REDIRECT_URL,
},
},
auth: {
jwtSecret:process.env.SSO_JWT_SECRET,
cookieSecret:process.env.SSO_COOKIE_SECRET,
}
}
module.exports = config;
사용하는 방법은 다음과 같습니다.
const mongoose = require("mongoose");
const config = require("./config");
const connect = async () => {
try {
let connection = await mongoose.connect(config.db.url, {
useUnifiedTopology: true,
useNewUrlParser: true,
useFindAndModify: false,
useCreateIndex: true
});
console.log("MongoDB connected");
return connection;
} catch (err) {
console.log(err);
console.log(`Connection failed with config ${config.db.url}`);
process.exit(1);
}
};
module.exports = connect;
[Node/Rest API] MongoDB 스키마 만들기 (0) | 2020.11.11 |
---|---|
[Node/Rest API] 필요한 미들웨어 등록하기 (0) | 2020.11.10 |
[Node/Rest API] MongoDB 접속모듈 만들기 (0) | 2020.11.10 |
[Node/Rest API] ACCESS_TOKEN / CSRF_TOKEN 처리 (0) | 2020.11.09 |
[Node/Tutorial] Blocking / Non blocking 코드 (0) | 2020.11.09 |