过期JWT的{React-redux和React Native错误处理

时间:2017-07-13 20:08:51

标签: react-native redux jwt express-jwt

我有一个认证基于JWT的系统。我有一个JWT身份验证令牌,以及客户端上的刷新令牌。刷新令牌存储在服务器上的数据库中,用于在JWT每12小时到期时刷新JWT - 我相信这是非常标准的设置。

我的问题是将它合并到我的React Native项目中并处理令牌过期。用户可能会对其受保护的"执行许多API调用。需要JWT的区域,但是一旦JWT到期,它将发回" UnauthorizedError"像这样:

router.use('/protected', ejwt({secret: config.secret}));
//catch any errors if the JWT is not valid
router.use((err, req, res, next) => {
  if (err.name === 'UnauthorizedError') {
    res.status(401).send({
      success: false,
      error: "UnauthorizedError"
    });
  }
});

这将发回给JWT过期的RN应用程序,但此时我希望应用程序将另一个请求发送回服务器生成新的JWT,但我不确定是否有办法为我的应用程序启动的每个API调用最有效地执行此操作。每个API调用都可以调用一个函数来检查服务器,如果返回的值是" UnauthorizedError",但我知道这不是最好的方法:

return AuthApi.someApiCall(token).then(response => {
    if(response.success){
        //do some success stuff
    }else{
        //this seems bad to be repeated for every API call
        checkToken(response).then(() => {
            dispatch(updateAuthToken());
        });
    }
})

我一直在环顾四周,Redux中间件看起来很有前途,但我不知道是否有更成熟的方式,或者有人有任何其他想法?

谢谢!

0 个答案:

没有答案