この記事では、ログイン認証を実装するための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 オーバーレイ ファイルがディスク領域を大量に占有する
HTML には、幅の異なる 5 つのスペース エンティティが用意されています。非改行スペース ( )...
参考までに、ネイティブjsを使用して簡単な計算機(詳細なコメント付き)を実装します。具体的な内容は次...
マウスを動かしたときにDIVが消えるように手ぶれ補正を使用するdiv タグ自体は onblur イベ...
由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...
多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...
IDC のサーバーの /partition 使用率がいっぱいです。 100% に到達しました!確認し...
この記事では、例を使用して、MySQL で更新可能なビューを作成する方法について説明します。ご参考ま...
目次1. VMwareをインストールする1.1 VMwareworkstationsをダウンロードし...
1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...
目次MYSQL メタデータ ロック (MDL ロック) 学習理論とロック タイプ テスト1. 予備的...
1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...
目次序文1. データを抽出する2. エイリアス値3. 動的プロパティ4. オブジェクトの分解における...
Ubuntu 18.04では参考までにmysql 5.7をインストールします。具体的な内容は以下のと...
この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...
1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...