1

Passport Local Strategyを使用してユーザーテーブルから特定のユーザーを認証し、そのユーザーデータを表示します:Passport Local Strategyが特定のユーザーデータを取得するためにテーブルの最初のユーザーデータを取得しています

passport.use(new LocalStrategy(
    function (username, password, done) { 
    User.findOne({ where: { username } }) 
     .then(function (user) { 
     if (!user) { 
      return done(null, false); 
     } 
     else { 
      if (user.password != password) { 
      return done(null, false); 
      } 
     } 
     return done(null, user); 
     }); 
    })); 

passport.serializeUser(function (user, done) { 
    done(null, user.username); 
}); 

passport.deserializeUser(function (username, done) { 
    User 
    .find({ username: username }) 
    .then(function (user) { 
     done(null, user); 
    }); 
}); 

パスポートからisAuthenticatedの取得ローカルおよびインデックスルートに渡す:

router.get('/', function (req, res) { 
    res.render('index', { 
    title: 'Title', 
    isAuthenticated: req.isAuthenticated(), 
    user: req.user 
    }); 
}); 

ログイン路線:

router.get('/login', function (req, res) { 
    res.render('login', { title: 'Sign in' }); 
}); 

router.post('/login', passport.authenticate('local'), function (req, res) { 
    res.redirect('/'); 
}); 

しかし、ユーザーがログインすると、ユーザーを認証してインデックスページに移動しますが、データベースページの最初のユーザー名がインデックスページのウェルカムメッセージに表示されます。現在のユーザー名は表示されません。

extends layout 

block content 

    h1(id='title')= title 
    p Welcome to #{title} 
    if !isAuthenticated 
    a(href="login") Sign in 
    p 
    a(href="signup") Create an account 
    else 
    p Welcome #{user.username} 
    a(href="Logout") Logout 

答えて

0

変更User.find({ username: username })deserializeUser機能でUser.find({ where: {username: username} })へ:ここ

はインデックスページです。

+0

'{username:username} 'の前に' where'を追加して 'deserializeUser'関数を更新しました。 – mhasan

関連する問題