Web アプリケーションの複雑さが増すにつれて、権限管理の重要性がますます高まっています。ユーザーとユーザー ロールの管理、および特定のページへのアクセスの制限は、Web アプリケーションの重要な部分になっています。 Node.js は、効率的な Web アプリケーションの構築に役立つ非常に人気のあるサーバーサイド JavaScript 環境です。この記事では、Node.js を使用して権限管理システムを構築する方法を学びます。
権限管理は、ユーザーがアクセスして実行できる内容を制御するプロセスです。これには、ユーザーとユーザーの役割の管理、リソースと権限の割り当てなどが含まれます。
Web アプリケーションでは、機密情報の保護やユーザーのアクセス権限の制御など、権限管理は非常に重要です。ユーザーが異なれば、その役割と権限に応じて、異なるアクセス権が付与される場合があります。
Node.js は、効率的な Web アプリケーションを構築するのに最適なイベント駆動型のサーバーサイド JavaScript 環境です。 Node.js を使用して権限管理システムを構築すると、次のような利点があります。
Node.js を使用して権限管理システムを構築する手順は次のとおりです:
Node.js の使用を開始するには、まず Node.js をインストールする必要があります。 [Node.js 公式 Web サイト](https://nodejs.org/en/) にアクセスして、Node.js の最新バージョンをダウンロードできます。インストーラーを実行した後、コマンド ラインから Node.js が正しくインストールされていることを確認できます。コマンド ラインに次のコマンドを入力します。
node -v
インストールが成功すると、Node.js のバージョン番号が表示されます。
Node.js がインストールされたので、プロジェクトをセットアップする必要があります。コマンド ラインでプロジェクト フォルダーに移動し、次のコマンドを入力します。
npm init
このコマンドでは、新しい package.json ファイルを作成します。このファイルは、プロジェクトのすべての情報と依存関係が含まれる JavaScript プロジェクトのマニフェストです。
Node.js では、パッケージ マネージャー npm を使用して必要なモジュールを簡単にインストールできます。コマンド ラインに次のコマンドを入力して、必要なモジュールをインストールします。
npm install express body-parser cookie-parser express-session connect-flash --save
ユーザーとロールの情報を保存するためのデータベースも必要です。この記事ではMongoDBを使用します。
まず、MongoDB をインストールする必要があります。 MongoDB の最新バージョンは、[MongoDB 公式 Web サイト](https://www.mongodb.com/) からダウンロードできます。
次に、MongoDB に新しいデータベースとコレクションを作成する必要があります。コマンド ラインで次のコマンドを入力します。
mongo use mydb db.createCollection("users") db.createCollection("roles")
このコードは、「mydb」という名前のデータベースと、「users」と「roles」という名前の 2 つのコレクションを作成します。
すべての準備が完了したので、コードの作成を開始できます。プロジェクト ディレクトリで、「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'); });
このコードには、次の手順が含まれます。
最後に、Web アプリケーションを表示するためのビューを作成する必要があります。
プロジェクト ディレクトリに、「views」というフォルダーを作成し、次のビュー ファイルを作成します。
<!doctype html> <html> <head> <title>Node.js Authorization</title> </head> <body> <h1>Node.js Authorization</h1> <nav> <% if (typeof user === 'undefined') { %> <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 サイトの他の関連記事を参照してください。