我正在尝试将从 Passport.js 返回的 jwt token 存储在浏览器 localStorage 中,由于 token 是从服务器生成的,因此从服务器到客户端的通信遇到了一些问题。
对于如何在客户端浏览器 localStorage 上设置服务器生成的 token 的任何帮助,我将不胜感激。
路线
// Setting the github oauth routes
app.get('/auth/github', passport.authenticate('github', {
failureRedirect: '/signin'
}), authCallback);
app.get('/auth/github/callback', passport.authenticate('github', {
failureRedirect: '/signin'
}), authCallback);
passport.js
passport.use(new GitHubStrategy(
{
clientID: process.env.GITHUB_CLIENT_ID || config.github.clientID,
clientSecret: process.env.GITHUB_CLIENT_SECRET || config.github.clientSecret,
callbackURL: config.github.callbackURL
},
((accessToken, refreshToken, profile, done) => {
User.findOne({
'github.id': profile.id
}, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
user = new User({
name: profile.displayName,
username: profile.username,
provider: 'github',
github: profile._json
});
user.save(() => done(err, user));
} else {
return done(err, user);
}
});
})
));
AuthCallBack
export const authCallback = (req, res) => {
const { TOKEN_SECRET } = process.env;
if (!req.user) {
res.redirect('/#!/signin?error=emailRequired');
} else {
const token = jwt.sign(
{ user: req.user.id, name: req.user.name },
TOKEN_SECRET,
{ expiresIn: 72 * 60 * 60 }
);
// window.localStorage.setItem('token', token);
res.redirect('/#!/app');
}
};
如果您能帮助我将来自 authCallBack 的 token 存储在我的浏览器 localStorage 中,我将不胜感激。
最佳答案
我必须通过在浏览器 cookie 中设置数据,然后检索客户端中存储的数据,然后将数据存储在浏览器 localStorage 中来解决此问题。
关于node.js - 如何将 Passport.js 中的 token 存储在本地存储中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452290/