#javascript #node.js #reactjs #authentication #passport.js
#javascript #node.js #reactjs #аутентификация #passport.js
Вопрос:
Я сталкиваюсь с проблемой при попытке выяснить, аутентифицирован ли клиент (React) или нет, чтобы показывать разные страницы. Я знаю, что passport-local устанавливает файл cookie с идентификатором сеанса на клиенте, но document.cookie
возвращает пустую строку.
Настройки My passport-local и session довольно стандартны
// --------------- SESSION ---------------
app.use(session({
secret: process.env.SESSION_SECRET,
saveUninitialized: true,
resave: true
}))
// --------------- PASSPORT ---------------
passport.use(new LocalStrategy({
usernameField: 'email'
}, (email, password, done) => {
User.findOne({ email }, function (err, user) {
if (err) return done(err)
if (!user) {
return done(null, false, { message: 'User not found.' })
}
if (user.password !== password) {
return done(null, false, { message: 'Incorrect password.' })
}
return done(null, user)
})
}))
passport.serializeUser((user, done) => {
done(null, user.id)
})
passport.deserializeUser(async (id, done) => {
try {
const user = await User.findById(id)
if(!user)
return done(new Error('User not found'))
done(null, user)
} catch (err) {
done(err)
}
})
app.use(passport.initialize())
app.use(passport.session())
Итак, как я могу проверить, аутентифицирован ли клиент или нет?
Ответ №1:
Я решил эту проблему , добавив /auth/user
конечную точку на сервере , которая возвращает req.user
.