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 オーバーレイ ファイルがディスク領域を大量に占有する

推薦する

Vueのprovideとinjectの使い方と原則を分析する

まず、provide/inject を使用する理由について説明しましょう。祖父コンポーネントと孫コン...

ネイティブ JS 音楽プレーヤー

この記事の例では、音楽プレーヤーを実装するためのJSの具体的なコードを参考までに共有しています。具体...

Linux で lvm 論理ボリューム パーティションのサイズを調整するチュートリアル (xfs や ext4 などのさまざまなファイル システム用)

序文システムをインストールしたときに、パーティション領域を適切に割り当てませんでした。その後のメンテ...

Vueは右上隅の時間表示のリアルタイム更新を実装します

この記事の例では、右上隅の時間表示のリアルタイム更新を実現するためのVueの具体的なコードを紹介しま...

Zabbix は DingTalk のアラーム機能を画像付きで設定します

実装のアイデア:まず、アラーム情報にはitemidが必要です。これは前提条件です。情報に渡されるパラ...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

MySQL データベース操作 (作成、選択、削除)

MySQL データベースの作成MySQL サービスにログインしたら、create コマンドを使用し...

HTTPプロトコルにおけるステータスコードの意味

暫定的な応答を示し、要求者に操作の続行を要求するステータス コード。コードの説明100 (続行) リ...

Docker ベースの Redis クラスターの構築方法

Redisイメージをダウンロードする docker pull yyyyttttwww/redis を...

製品の拡大鏡効果を実現する JavaScript

この記事では、参考までに、製品拡大鏡を実装するためのJavaScriptの具体的なコードを紹介します...

Vueはアコーディオン効果を実装する

この記事の例では、アコーディオン効果を実現するためのVueの具体的なコードを参考までに共有しています...

Linux jdk のインストールと環境変数の設定チュートリアル (jdk-8u144-linux-x64.tar.gz)

最初にsudo suコマンドを使用して root アカウントに切り替えることをお勧めします。そうしな...

MySQLインデックスベースのストレステストの実装

1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...

Docker のポート解放失敗の解決策

今日、非常に奇妙な状況に遭遇しました。docker イメージを更新した後、docker-compos...