首页 > 解决方案 > 在 google oauth 之后将 JWT 作为查询字符串发回

问题描述

用户通过 google oauth 进行身份验证后发送 JWT 的最佳方式是什么?

我目前使用 node/express 作为后端并作为前端做出反应(它们位于不同的域中)。

一种方法是将令牌设置为查询字符串并重定向以做出反应。

高速路由器:

router.get(
    '/auth/google',
    passport.authenticate('google', { scope: ['profile', 'email'] })
);
router.get(
    '/auth/google/callback',
    passport.authenticate('google', { failureRedirect: '/', session: false }),
    (req, res) => {
        const token = req.user.token;
        res.redirect(`http://localhost:3000?token=${token}`);
    }
);

App.js 的反应:

componentWillMount() {
    const query = queryString.parse(this.props.location.search);
    if (query.token) {
      window.localStorage.setItem('jwt', query.token);
      this.props.history.push('/');
   }
}
render(){
   ...
}

将令牌作为查询字符串发送是否安全?

有没有更好的方法呢?

标签: javascriptnode.jsreactjspassport.jsgoogle-oauth

解决方案


推荐阅读