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
'{username:username} 'の前に' where'を追加して 'deserializeUser'関数を更新しました。 – mhasan