1
我正在使用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
我更新了'deserializeUser'函數,在'{用戶名:用戶名}'之前加了'where',它就起作用了! – mhasan