前提・実現したいこと
プログラミング初心者です。
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー