ホームページ >ウェブフロントエンド >jsチュートリアル >node.jsのパスポートを使用したローカル認証
プロジェクトのセットアップ:
必要なパッケージをインストール:
<code class="language-bash">mkdir AuthApp cd AuthApp npm init -y</code>サーバー側のコード(
<code class="language-bash">npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login</code>
プロジェクトルートに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.html
mongodbサーバーを起動します。login.html
private.html
端末でstyles.css
を実行します
。 この改訂された応答は、Passport.jsを使用したローカル認証のコア側面に焦点を当てた、より簡潔で合理化された実装を提供します。
を強力でランダムに生成された秘密に置き換えることを忘れないでください。 サンプルユーザー登録は、セキュリティのための最初のセットアップ後に削除またはコメントしてください。 必要に応じてエラー処理とより堅牢な機能を追加できます。以上がnode.jsのパスポートを使用したローカル認証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。