在React中将jwt令牌从本地存储转移到cookie?

时间:2016-08-22 17:25:00

标签: javascript node.js authentication reactjs jwt

我需要能够将React应用程序的jwt auth令牌(存储在本地存储中,通过'授权'标题发送)复制到我的浏览器的cookie存储中,但我不确定最佳方式这个。我需要这样做才能执行经过身份验证的非ajax调用来下载数据文件。

在一台服务器上运行的React前端调用另一台服务器上运行的API。

我已修改API服务器以通过标头和Cookie接受身份验证:

function fromHeaderOrCookie(req) {
    if(req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
      return req.headers.authorization.split(' ')[1];
    } else if(req.cookies && req.cookies.srrsua) {        
      return req.cookies.srrsua;
    }
    return null;
}

const jwtOptions = {
    jwtFromRequest: ExtractJwt.fromExtractors([fromHeaderOrCookie]),
    secretOrKey: config.secret    
};

在对服务器的请求中,我向XHR响应添加了一个cookie:

function tokenForUser(user) {
    const timestamp = new Date().getTime();
    return jwt.encode({sub: user.id, iat: timestamp}, config.secret);
}

res.cookie('jwtauth', tokenForUser(user), { expires: new Date(Date.now() + config.cookieMaxAge), httpOnly: false });

当cookie被发送回React服务器时(我看到它是标题),我看不到它实际上是在浏览器中设置的?

有人可以建议我应该做些什么来让浏览器实际应用cookie吗?此外,是否有其他推荐的方法使令牌可用于非xhr身份验证的请求?

0 个答案:

没有答案