我正在尝试将来自passport.js的jwt令牌存储在浏览器localStorage中,因为从服务器生成令牌,我遇到了从服务器到客户端的通信问题。
我将非常感谢有关如何在客户端浏览器localStorage上设置服务器生成的令牌的任何帮助。
路线
// 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');
}
};
我将非常感谢在我的浏览器localStorage中存储来自authCallBack的令牌的任何帮助。
答案 0 :(得分:2)
我必须通过在浏览器cookie中设置数据然后在客户端检索存储的数据然后将数据存储在浏览器localStorage中来解决这个问题。