Node.jsを使用して権限管理システムを構築する方法

PHPz
リリース: 2023-04-05 09:17:59
オリジナル
1614 人が閲覧しました

Web アプリケーションの複雑さが増すにつれて、権限管理の重要性がますます高まっています。ユーザーとユーザー ロールの管理、および特定のページへのアクセスの制限は、Web アプリケーションの重要な部分になっています。 Node.js は、効率的な Web アプリケーションの構築に役立つ非常に人気のあるサーバーサイド JavaScript 環境です。この記事では、Node.js を使用して権限管理システムを構築する方法を学びます。

権限管理とは何ですか?

権限管理は、ユーザーがアクセスして実行できる内容を制御するプロセスです。これには、ユーザーとユーザーの役割の管理、リソースと権限の割り当てなどが含まれます。

Web アプリケーションでは、機密情報の保護やユーザーのアクセス権限の制御など、権限管理は非常に重要です。ユーザーが異なれば、その役割と権限に応じて、異なるアクセス権が付与される場合があります。

権限管理に Node.js を使用する理由

Node.js は、効率的な Web アプリケーションを構築するのに最適なイベント駆動型のサーバーサイド JavaScript 環境です。 Node.js を使用して権限管理システムを構築すると、次のような利点があります。

  • 迅速な開発: Node.js は、開発時間を大幅に短縮できる多数のモジュールとライブラリを提供します。
  • 高パフォーマンス: Node.js はノンブロッキングであるため、多数の同時リクエストを処理できます。
  • 拡張性: Node.js を使用すると、モジュールを簡単に追加および拡張できます。
  • コスト: Node.js は無料で、広範なドキュメントとコミュニティ リソースがあります。

Node.js を使用して権限管理システムを構築する

Node.js を使用して権限管理システムを構築する手順は次のとおりです:

ステップ 1: インストールNode.js

Node.js の使用を開始するには、まず Node.js をインストールする必要があります。 [Node.js 公式 Web サイト](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: Web アプリケーションを作成するためのフレームワーク。
  • body-parser: リクエスト本文のデータを解析するために使用されます。
  • cookie-parser: Cookie 内のデータを解析するために使用されます。
  • express-session: セッションの管理に使用されます。
  • connect-flash: フラッシュ メッセージを表示するために使用されます。
npm install express body-parser cookie-parser express-session connect-flash --save
ログイン後にコピー

ステップ 4: データベースを作成する

ユーザーとロールの情報を保存するためのデータベースも必要です。この記事ではMongoDBを使用します。

まず、MongoDB をインストールする必要があります。 MongoDB の最新バージョンは、[MongoDB 公式 Web サイト](https://www.mongodb.com/) からダウンロードできます。

次に、MongoDB に新しいデータベースとコレクションを作成する必要があります。コマンド ラインで次のコマンドを入力します。

mongo
use mydb
db.createCollection("users")
db.createCollection("roles")
ログイン後にコピー

このコードは、「mydb」という名前のデータベースと、「users」と「roles」という名前の 2 つのコレクションを作成します。

ステップ 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. すべての Requires ノードをインポートする.js モジュールを作成し、MongoDB データベースに接続します。
  2. 2 つの MongoDB コレクション、ユーザーとロールを定義します。
  3. Express アプリケーションを構成し、ユーザーの役割を検証するためのミドルウェア関数を定義します。
  4. ルート ルーティング、ログイン ルーティング、ダッシュボード ルーティング、ログアウト ルーティングなどのエクスプレス ルーティングを定義します。
  5. Express アプリケーションを起動し、ポート 3000 でリッスンします。

ステップ 6: ビューの作成

最後に、Web アプリケーションを表示するためのビューを作成する必要があります。

プロジェクト ディレクトリに、「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>
ログイン後にコピー

これら 3 つのビューは少し異なります。index.ejs ルートは直接アクセスでき、login.ejs ルートはログインしていないときに制御され、dashboard.ejs は次の権限を持つユーザーのみがアクセスできます。マネージャーの正体。

結論

Node.js は、効率的な Web アプリケーションを構築するための優れたツールです。強力な権限管理システムを簡単に構築できるよう、多数の機能とモジュールを提供します。 Node.js を使用すると、迅速な開発、優れたパフォーマンス、スケーラビリティが得られ、しかも無料です。 Node.js には、大量のサポートとリソースを提供する活発なコミュニティもあります。

この記事では、Node.js を使用して権限管理システムを構築する方法を学びました。 MongoDB を使用してユーザーとロールの情報を保存する方法、Express.js を使用して Web アプリケーションを構築する方法、およびテンプレート エンジンを使用してビューをレンダリングする方法を学びました。

この記事がお役に立てば幸いです、読んでいただきありがとうございます。

以上がNode.jsを使用して権限管理システムを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート