>웹 프론트엔드 >JS 튜토리얼 >Node.js를 사용하여 권한 관리 시스템을 구축하는 방법

Node.js를 사용하여 권한 관리 시스템을 구축하는 방법

PHPz
PHPz원래의
2023-04-05 09:08:501621검색

웹 애플리케이션의 복잡성이 증가함에 따라 권한 관리가 점점 더 중요해지고 있습니다. 사용자 및 사용자 역할을 관리하고 특정 페이지에 대한 액세스를 제한하는 것은 웹 애플리케이션의 필수적인 부분이 되었습니다. Node.js는 효율적인 웹 애플리케이션을 구축하는 데 도움이 되는 매우 인기 있는 서버 측 JavaScript 환경입니다. 이 기사에서는 Node.js를 사용하여 권한 관리 시스템을 구축하는 방법을 알아봅니다.

권한 관리란 무엇인가요?

권한 관리는 사용자가 액세스하고 수행할 수 있는 작업을 제어하는 ​​프로세스입니다. 여기에는 사용자 및 사용자 역할 관리, 리소스 및 권한 할당 등이 포함됩니다.

웹 애플리케이션에서는 민감한 정보를 보호하든 사용자 액세스 권한을 제어하든 권한 관리가 매우 중요합니다. 사용자마다 역할 및 권한에 따라 서로 다른 액세스 권한이 있을 수 있습니다.

권한 관리에 Node.js를 사용하는 이유는 무엇인가요?

Node.js는 효율적인 웹 애플리케이션을 구축하는 데 이상적인 이벤트 중심 서버측 JavaScript 환경입니다. Node.js를 사용하여 권한 관리 시스템을 구축하면 다음과 같은 이점을 얻을 수 있습니다.

  • 빠른 개발: Node.js는 개발 시간을 크게 줄일 수 있는 수많은 모듈과 라이브러리를 제공합니다.
  • 고성능: Node.js는 비차단형이므로 많은 수의 동시 요청을 처리할 수 있습니다.
  • 확장성: Node.js를 사용하면 모듈을 쉽게 추가하고 확장할 수 있습니다.
  • 비용: Node.js는 무료이며 광범위한 문서와 커뮤니티 리소스를 갖추고 있습니다.

Node.js를 사용하여 권한 관리 시스템 구축

다음은 Node.js를 사용하여 권한 관리 시스템을 구축하는 단계입니다.

1단계: Node.js 설치

Node.js 사용을 시작하려면 다음을 수행해야 합니다. 먼저 설치하세요. [Node.js 공식 홈페이지](https://nodejs.org/en/)에서 최신 버전의 Node.js를 다운로드할 수 있습니다. 설치 프로그램을 실행한 후 명령줄에서 Node.js가 올바르게 설치되었는지 확인할 수 있습니다. 명령줄에 다음 명령을 입력하세요.

node -v

설치에 성공하면 Node.js 버전 번호가 표시됩니다.

2단계: 프로젝트 설정

Node.js가 설치되었으므로 이제 프로젝트를 설정해야 합니다. 명령줄에서 프로젝트 폴더로 이동하여 다음 명령을 입력합니다.

npm init

이 명령은 새 package.json 파일을 생성하는 방법을 안내합니다. 이 파일은 프로젝트의 모든 정보와 종속성을 포함하는 JavaScript 프로젝트의 매니페스트입니다.

3단계: 필수 Node.js 모듈 설치

Node.js에서는 패키지 관리자 npm을 사용하여 필요한 모듈을 쉽게 설치할 수 있습니다. 필수 모듈을 설치하려면 명령줄에 다음 명령을 입력하세요.

  • express: 웹 애플리케이션 생성을 위한 프레임워크입니다.
  • body-parser: 요청 본문의 데이터를 구문 분석하는 데 사용됩니다.
  • cookie-parser: 쿠키의 데이터를 구문 분석하는 데 사용됩니다.
  • express-session: 세션을 관리하는 데 사용됩니다.
  • connect-flash: 플래시 메시지를 표시하는 데 사용됩니다.
npm install express body-parser cookie-parser express-session connect-flash --save

4단계: 데이터베이스 생성

사용자 및 역할 정보를 저장하기 위한 데이터베이스도 필요합니다. 이번 글에서는 MongoDB를 사용하겠습니다.

먼저 MongoDB를 설치해야 합니다. 최신 버전의 MongoDB는 [MongoDB 공식 홈페이지](https://www.mongodb.com/)에서 다운로드할 수 있습니다.

그런 다음 MongoDB에서 새 데이터베이스와 컬렉션을 만들어야 합니다. 명령줄에 다음 명령을 입력하세요.

mongo
use mydb
db.createCollection("users")
db.createCollection("roles")

이 코드는 "mydb"라는 데이터베이스와 "users" 및 "roles"라는 두 개의 컬렉션을 생성합니다.

5단계: 코드 작성

모든 준비가 완료되었으므로 이제 코드 작성을 시작할 수 있습니다. 프로젝트 디렉터리에서 "app.js"라는 파일을 만들고 파일에 다음 코드를 추가합니다.

const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const flash = require('connect-flash');
const mongoose = require('mongoose');

const app = express();

mongoose.connect('mongodb://localhost/mydb');

const User = mongoose.model('User', { name: String, password: String, role: String });
const Role = mongoose.model('Role', { name: String, permissions: [String] });

app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({ secret: 'secret key', resave: false, saveUninitialized: false }));
app.use(flash());

const requireRole = (role) => {
  return (req, res, next) => {
    if (req.session.user && req.session.user.role === role) {
      next();
    } else {
      req.flash('error', 'Permission denied');
      res.redirect('/login');
    }
  };
};

app.get('/', (req, res) => {
  res.render('index');
});

app.get('/login', (req, res) => {
  res.render('login', { error: req.flash('error') });
});

app.post('/login', (req, res) => {
  User.findOne({ name: req.body.name, password: req.body.password }, (err, user) => {
    if (err) {
      req.flash('error', 'Login failed');
      res.redirect('/login');
    } else if (!user) {
      req.flash('error', 'Invalid user or password');
      res.redirect('/login');
    } else {
      req.session.user = user;
      res.redirect('/dashboard');
    }
  });
});

app.get('/dashboard', requireRole('manager'), (req, res) => {
  res.render('dashboard');
});

app.get('/logout', (req, res) => {
  req.session.destroy();
  res.redirect('/login');
});

app.listen(3000, () => {
  console.log('Server started at http://localhost:3000');
});

이 코드에는 다음 단계가 포함됩니다.

  1. 모든 필수 Node.js 모듈을 가져오고 MongoDB 데이터베이스를 연결합니다.
  2. 두 개의 MongoDB 컬렉션 사용자 및 역할을 정의합니다.
  3. Express 애플리케이션을 구성하고 사용자 역할 검증을 위한 미들웨어 기능을 정의합니다.
  4. 루트 경로, 로그인 경로, 대시보드 경로 및 로그아웃 경로를 포함한 Express 경로를 정의합니다.
  5. Express 애플리케이션을 시작하고 포트 3000에서 수신합니다.

6단계: 뷰 생성

마지막으로 웹 애플리케이션을 표시하기 위한 뷰를 생성해야 합니다.

프로젝트 디렉터리에서 "views"라는 폴더를 만들고 다음 보기 파일을 만듭니다.

  • index.ejs: 홈 페이지 렌더링용.
  • login.ejs: 로그인 인터페이스를 표시하는 데 사용됩니다.
  • dashboard.ejs: 대시보드를 렌더링하는 데 사용됩니다.
<!doctype html>
<html>
<head>
  <title>Node.js Authorization</title>
</head>
<body>
  <h1>Node.js Authorization</h1>
  <nav>
    <% if (typeof user === &#39;undefined&#39;) { %>
      <a href="/login">Sign in</a>
    <% } else { %>
      <a href="/dashboard">Dashboard</a>
      <a href="/logout">Sign out</a>
    <% } %>
  </nav>
  <hr>
  <p>Welcome to Node.js Authorization.</p>
</body>
</html>
<!doctype html>
<html>
<head>
  <title>Node.js Authorization - Login</title>
</head>
<body>
  <h1>Node.js Authorization - Login</h1>
  <% if (error) { %>
    <p><%= error %></p>
  <% } %>
  <form method="post" action="/login">
    <div>
      <label for="name">Name:</label>
      <input type="text" name="name" required>
    </div>
    <div>
      <label for="password">Password:</label>
      <input type="password" name="password" required>
    </div>
    <div>
      <input type="submit" value="Sign in">
    </div>
  </form>
</body>
</html>
<!doctype html>
<html>
<head>
  <title>Node.js Authorization - Dashboard</title>
</head>
<body>
  <h1>Node.js Authorization - Dashboard</h1>
  <nav>
    <a href="/">Home</a>
    <a href="/logout">Sign out</a>
  </nav>
  <hr>
  <h2>Welcome <%= user.name %>.</h2>
  <p>You are logged in as a manager.</p>
</body>
</html>

이 세 가지 보기는 약간 다릅니다. index.ejs 경로는 직접 액세스할 수 있고, login.ejs 경로는 로그인하지 않은 상태에서 제어되며, Dashboard.ejs는 관리자 ID를 가진 사용자만 액세스할 수 있습니다.

결론

Node.js는 효율적인 웹 애플리케이션을 구축하기 위한 훌륭한 도구입니다. 강력한 권한 관리 시스템을 쉽게 구축하는 데 도움이 되는 다양한 기능과 모듈을 제공합니다. Node.js를 사용하면 빠르게 개발하고, 우수한 성능을 발휘하고, 확장 가능하며, 무료입니다. Node.js에는 수많은 지원과 리소스를 제공하는 활발한 커뮤니티도 있습니다.

이 기사에서는 Node.js를 사용하여 권한 관리 시스템을 구축하는 방법을 배웠습니다. MongoDB를 사용하여 사용자 및 역할 정보를 저장하는 방법, Express.js를 사용하여 웹 애플리케이션을 구축하는 방법, 템플릿 엔진을 사용하여 뷰를 렌더링하는 방법을 배웠습니다.

이 글이 도움이 되셨으면 좋겠습니다. 읽어주셔서 감사합니다.

위 내용은 Node.js를 사용하여 권한 관리 시스템을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.