この記事では、ログイン認証を実装するためのExpressの具体的なコードを例として紹介します。具体的な内容は以下のとおりです。 Express によって実装されたルーティング ログインは、多くのシナリオに適用できます。このコードは、将来の使用のために記録されます。 まずメインファイル: server.js 定数 express = require('express'); 定数static = require('express-static'); bodyParser は、'body-parser' を必要とします。 const multer = require('multer'); // 構成ファイルをアップロードするパス。ここではローカル アドレスです。const multerObj = multer({ dest: './static/upload' }); クッキーパーサーが必要です。 const cookieSession = require('cookie-session'); const 統合 = require('統合'); // サブルート ページを使用する必要があります。インストールされていることを確認してください。const expressRoute = require('express-route'); 定数 mysql = require('mysql'); var server = express(); サーバーを listen (8080); // 送信されたデータとファイルを処理します。server.use(bodyParser.urlencoded()); server.use(multerObj.any()); // クッキーと署名の処理 server.use(cookieParser()); (関数 () { var キー = []; (var i = 0; i < 100000; i++) の場合 { キー[i] = 'secret' + Math.random(); }; server.use(cookieSession({ 名前: 'session_id', キー: キー、 最大年齢: 20 * 60 * 1000 })); })(); // テンプレートのレンダリング server.engine('html', consolidate.ejs); server.set('ビュー', 'テンプレート'); server.set('ビューエンジン', 'html'); // ルート分割 server.use('/', require('./route/web/index.js')()); // フロントエンドルーティング server.use('/admin/', require('./route/admin/index.js')()); // バックエンドルーティング // 静的データ server.use(static('./static/')); 上記は全体的な構造フレームワークです。今後はルーティング部分のみに注目してください。以下はバックグラウンドルーティング部分です。 定数 express = require('express'); モジュール.エクスポート = 関数 () { var ルーター = express.Router(); // ログインする前に router.use((req, res, next) => { req.session['admin_id'] && req.url != '/login' の場合 { res.redirect('/admin/login'); } それ以外 { 次(); } }); router.use('/login', require('./login')()); // 通常のログイン後のその他のルート router.get('/', (req, res) => { res.render('admin/index.ejs', {}); }); // ビジネスに基づいてルーティングを追加します router.use('/banners', require('./banners')()); リターンルーター; }; Express のモジュール性は、実際にはレベルごとにルーティングすることによって定義されます。次に、上記のコード内のログイン コードの実装を見てみましょう。 定数 express = require('express'); // カプセル化されたパブリックメソッド (md5) 暗号化モジュール const common = require('../../libs/common'); 定数 mysql = require('mysql'); var db = mysql.createPool({ ホスト: 'localhost', ユーザー: 'root'、 パスワード: '123456', データベース: 'ブログ' }); モジュール.エクスポート = 関数 () { var ルーター = express.Router(); router.get('/', (req, res) => { res.render('admin/login.ejs', {}); }); router.post('/', (req, res) => { var ユーザー名 = req.body.username; var パスワード = common.md5(req.body.password + common.MD5_SUFFIX); db.query(`SELECT * FROM admin_table WHERE username='${username}'`, (err, data) => { もし(エラー){ // 返されるデータは非常に単純です。実際には、オブジェクトが返されます。res.status(500).send('データベース接続エラー').end(); } それ以外 { データ長が0の場合 res.status(400).send('管理者が存在しません').end(); } それ以外 { if (data[0].password == パスワード) { req.session['admin_id'] = data[0].ID; res.redirect('/admin/'); } それ以外 { res.status(400).send('パスワードが間違っています').end(); } } } }); }); リターンルーター; }; 上記のコードには common モジュールのインポートがあることに気付いたかもしれません。このファイルは主に、md5 暗号化メソッドなどのいくつかの共通メソッドを定義します。 const crypto = require('crypto'); モジュール.エクスポート = { MD5_SUFFIX: 'FDSW$t34tregt5tO&$(#RHuyoyiUYE*&OI$HRLuy87odlfh)', md5: 関数 (str) { var obj = crypto.createHash('md5'); obj.update(文字列); obj.digest('hex') を返します。 } }; 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Docker クリーニングキラー/Docker オーバーレイ ファイルがディスク領域を大量に占有する
開発に携わっている友人、特に MySQL に関係のある友人は、非常に遅い MySQL クエリに遭遇す...
以下のように表示されます。主に認証コマンドを実行します: 2つの方法1. 任意のホストがユーザー b...
1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...
借財宝は最近人気が出ている携帯電話ローンソフトウェアプラットフォームです。知人同士の貸し借りが特徴で...
1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...
フロントエンド開発において、$ は jQuery の関数です。$ のパラメータが異なると、実装される...
次の2つの関数は、 FIND_IN_SETと同じように使用されます。使用する場合、 FIND_IN_...
MySQL データベースを最適化すると、データベースの冗長性を削減できるだけでなく、データベースの実...
a.htmとb.htmの2つのファイルがあります。同じディレクトリ内のa.htmの内容は次のとおりで...
方法1: lsb_releaseユーティリティを使用するlsb_release ユーティリティは、L...
目次背景仮想ファイルのインポート例書類タイプスクリプトのサポート要約する背景新しいプロジェクトで v...
理由は、すべてのファイルが utf8 でエンコードされているためです。ファイルがインクルードされると...
目次1. 解析する1.1 傍受のルール1.2 傍受プロセス部分1.3 パーサーの概要2. 最適化する...
目次序文プロジェクト設計後部フロントエンドプロジェクトを実行する質疑応答序文これまでの API 開発...
1. 前提条件JDKがインストールされましたecho $PATHソフトリンクを作成し、JDKのインス...