Passport Local Strategy 无法检索特定的用户数据,而它会从 table 中提供第一个用户数据
Passport Local Strategy is not working to retrieve the specific user data, while it gives the first user data from the table
我正在使用 Passport Local Strategy 从用户 table 验证特定用户,然后获取该用户数据以查看:
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('/');
});
但是,当用户登录时,它会对用户进行身份验证并将其带到索引页面,但它会在索引页面欢迎消息中显示数据库中的第一个用户名 table。它不显示当前用户名。
这是索引页:
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
函数中将 User.find({ username: username })
更改为 User.find({ where: {username: username} })
。
我正在使用 Passport Local Strategy 从用户 table 验证特定用户,然后获取该用户数据以查看:
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('/');
});
但是,当用户登录时,它会对用户进行身份验证并将其带到索引页面,但它会在索引页面欢迎消息中显示数据库中的第一个用户名 table。它不显示当前用户名。
这是索引页:
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
函数中将 User.find({ username: username })
更改为 User.find({ where: {username: username} })
。