Expressはログイン認証を実装

Expressはログイン認証を実装

この記事では、ログイン認証を実装するための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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ログイン認証機能を実装するExpress + Session
  • Nodejs アドバンス: express+session でシンプルなログイン認証を実現
  • Node.js+Express+MySql でユーザーログインと登録機能を実現
  • ノードとエクスプレスを使用してMySQLに接続し、ログインと登録コードを実装します。
  • ログインと登録機能を実装するためのNode+Express+MongoDB
  • Express フレームワークで検証を実装するために JWT を使用する方法
  • 永続的なログインを実現するための Express + jwt + postMan 検証
  • Vue+Expressでログインステータス権限検証を実装するためのサンプルコード
  • NodejsはExpressを使用して、getとpostの値の転送とセッション検証メソッドを取得します。
  • DevExpressはGridControlセル編集検証メソッドを実装します

<<:  忘れられたボタンタグ

>>:  Docker クリーニングキラー/Docker オーバーレイ ファイルがディスク領域を大量に占有する

推薦する

HTML の 5 種類のスペースの意味

HTML には、幅の異なる 5 つのスペース エンティティが用意されています。非改行スペース ( )...

jsはシンプルな計算機を実装します

参考までに、ネイティブjsを使用して簡単な計算機(詳細なコメント付き)を実装します。具体的な内容は次...

DIVのぼかし機能を実装する方法

マウスを動かしたときにDIVが消えるように手ぶれ補正を使用するdiv タグ自体は onblur イベ...

CSS 属性を使用してマウス イベントをブロックする方法 (マウス クリックは上位の要素を貫通する可能性があります)

由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...

aタグ内のテキストを非表示にして画像を表示するには?360モードレンダリングに対応

多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...

Linux ディスク領域解放問題の概要

IDC のサーバーの /partition 使用率がいっぱいです。 100% に到達しました!確認し...

MySQLで更新可能なビューを作成する方法の詳細な説明

この記事では、例を使用して、MySQL で更新可能なビューを作成する方法について説明します。ご参考ま...

VMware に Linux システム (Redhat8) と仮想マシンのネットワーク構成をインストールする方法

目次1. VMwareをインストールする1.1 VMwareworkstationsをダウンロードし...

mysql 行列変換サンプルコード

1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...

MYSQL メタデータ ロック (MDL ロック) の理論とロック タイプ テスト

目次MYSQL メタデータ ロック (MDL ロック) 学習理論とロック タイプ テスト1. 予備的...

サーバー上で Nginx を使用して Springboot プロジェクトをデプロイする方法の詳細なチュートリアル (jar パッケージ)

1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...

JavaScript の構造化代入の一般的なシナリオと例 5 つ

目次序文1. データを抽出する2. エイリアス値3. 動的プロパティ4. オブジェクトの分解における...

Ubuntu 18.04にmysql5.7をインストールする

Ubuntu 18.04では参考までにmysql 5.7をインストールします。具体的な内容は以下のと...

効率化に役立つ 20 の CSS コーディングのヒント (並べ替え)

この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...

Linux でのマルチスレッドプログラミング例の分析

1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...