ホームページ >ウェブフロントエンド >jsチュートリアル >node.jsのパスポートを使用したローカル認証

node.jsのパスポートを使用したローカル認証

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-10 11:15:11743ブラウズ

Local Authentication Using Passport in Node.js

このチュートリアルでは、Passport.jsとMongoDBデータベースを使用したローカル認証を使用して、安全なnode.js Webアプリケーションの構築を示しています。 セッションベースの認証、サーバー側のセッション管理とCookieを活用する堅牢なアプローチに焦点を当てます。

重要な概念:

    passport.js:
  • node.jsアプリケーションでの認証を簡素化する強力なミドルウェア。 ユーザー認証を処理し、保護されたリソースへのアクセスを可能にします セッションベースの認証:
  • サーバーは、Cookieとサーバー側のセッションを使用して認証状態を管理します。 これはJWT(JSON Webトークン)とは対照的です。ここで、認証は部分的にクライアント側です。
  • mongodb&mongoose:Mongodbをデータベースとして、MongooseをODM(オブジェクトデータモデリング)ライブラリとして使用して、容易に対話します。
  • ローカル戦略:passport.jsのユーザー名/パスワード認証のための組み込み戦略
  • 前提条件:
  • node.jsとmongodbがインストールされていることを確認してください。 これらをインストールするための手順は、それぞれのWebサイトにあります。 node.js、express.js、および基本的なmongodbの概念に精通していることが役立ちます。

プロジェクトのセットアップ:

プロジェクトディレクトリを作成し、node.jsプロジェクトを初期化します:

必要なパッケージをインストール:

  1. <code class="language-bash">mkdir AuthApp
    cd AuthApp
    npm init -y</code>
    サーバー側のコード(
  2. ):
  3. <code class="language-bash">npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login</code>
  4. クライアントサイドコード(HTML&CSS):

プロジェクトルートにindex.jsおよびフォルダーを作成します。 必要なhtmlファイル(

<code class="language-javascript">const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const expressSession = require('express-session')({ secret: 'your-secret-key', resave: false, saveUninitialized: false });
const passport = require('passport');
const mongoose = require('mongoose');
const passportLocalMongoose = require('passport-local-mongoose');
const connectEnsureLogin = require('connect-ensure-login');

// MongoDB Connection
mongoose.connect('mongodb://localhost/MyDatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// User Schema
const userSchema = new mongoose.Schema({ username: String });
userSchema.plugin(passportLocalMongoose);
const User = mongoose.model('User', userSchema);

// Passport Configuration
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

// Middleware
app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(expressSession);
app.use(passport.initialize());
app.use(passport.session());

// Routes
app.post('/login', passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/login?info=Invalid credentials'
}));

app.get('/login', (req, res) => res.sendFile('html/login.html', { root: __dirname }));
app.get('/', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.sendFile('html/index.html', { root: __dirname }));
app.get('/private', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.sendFile('html/private.html', { root: __dirname }));
app.get('/user', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.json({ user: req.user }));

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`App listening on port ${port}`));

//Register Sample Users (remove or comment out after initial setup)
User.register({username: 'testuser'}, 'password', (err, user) => { if (err) console.error(err); });</code>

)とスタイリング用のファイル(コードなどの元の応答を参照)を入力します。 クライアント側のJavaScriptは、更新されたサーバー側のルートと応答に合わせてわずかに調整する必要があります。

アプリケーションの実行:

html css index.htmlmongodbサーバーを起動します。login.html private.html端末でstyles.cssを実行します

ブラウザのアプリケーションにアクセス

この改訂された応答は、Passport.jsを使用したローカル認証のコア側面に焦点を当てた、より簡潔で合理化された実装を提供します。

を強力でランダムに生成された秘密に置き換えることを忘れないでください。 サンプルユーザー登録は、セキュリティのための最初のセットアップ後に削除またはコメントしてください。 必要に応じてエラー処理とより堅牢な機能を追加できます。

以上がnode.jsのパスポートを使用したローカル認証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。