質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

0回答

1035閲覧

node.js + Express + passport + Mysqlを使用したログイン認証機能

ctrnn

総合スコア5

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

1クリップ

投稿2019/12/04 07:10

前提・実現したいこと

プログラミング初心者です。
node.jsでログイン認証画面を作成することになり、色々調べているうちにpassportというモジュールが有用そうなので使用することにしました。簡単なログイン画面まではサンプルを参考に作成できたのですが、データベースを参照しての書き方にどうしてもたどり着けませんでした。

下記
username:test
password:test
とハードコーディングしてある部分です。この部分をデータベースを参照してログインできるようにしたいです。できればサンプルコードをお願いします。

データベース情報
host: localhost
user: root
password: ''
database: testdatabase

table名: userdata
フィールド/値:
username/testuser
password/0

情報、文章が拙い部分多々ありますがよろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

node

1var createError = require('http-errors'); 2var express = require('express'); 3var path = require('path'); 4var cookieParser = require('cookie-parser'); 5var logger = require('morgan'); 6 7var passport = require('passport'); 8var LocalStrategy = require('passport-local').Strategy; 9var session = require('express-session'); 10var mysql = require('mysql'); //mysqlモジュール追加 11 12var indexRouter = require('./routes/index'); 13var usersRouter = require('./routes/users'); 14 15var app = express(); 16 17// view engine setup 18app.set('views', path.join(__dirname, 'views')); 19app.set('view engine', 'jade'); 20 21app.use(logger('dev')); 22app.use(express.json()); 23app.use(express.urlencoded({ extended: false })); 24app.use(cookieParser()); 25app.use(express.static(path.join(__dirname, 'public'))); 26 27app.use(session({ resave:false, saveUninitialized:false, secret:'passport test' })); 28 29app.use(passport.initialize()); 30app.use(passport.session()); 31var LocalStrategy = require('passport-local').Strategy; 32passport.use(new LocalStrategy({ 33 usernameField: 'username', 34 passwordField: 'password', 35 passReqToCallback: true, 36 session: false, 37}, function(req, username, password, done) { 38 process.nextTick(function() { 39 if(username === 'test' && password === 'test') { 40 return done(null, username) 41 } else { 42 console.log("login error") 43 return done(null, false, { message: 'パスワードが正しくありません。'}) 44 } 45 }) 46})); 47 48passport.serializeUser(function (user, done) { 49 done(null, user); 50}); 51 52passport.deserializeUser(function(user, done) { 53 done(null, user); 54}); 55 56app.use('/', indexRouter); 57app.use('/users', usersRouter); 58 59// catch 404 and forward to error handler 60app.use(function(req, res, next) { 61 next(createError(404)); 62}); 63 64// error handler 65app.use(function(err, req, res, next) { 66 // set locals, only providing error in development 67 res.locals.message = err.message; 68 res.locals.error = req.app.get('env') === 'development' ? err : {}; 69 70 // render the error page 71 res.status(err.status || 500); 72 res.render('error'); 73}); 74 75module.exports = app; 76

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問