如何在React / Redux中Session(JWT)到期时发出警报

时间:2016-07-17 19:55:40

标签: javascript session reactjs redux single-page-application

有哪些方法可以提醒用户React / Redux应用程序中的过期会话?

服务器使用JWT令牌验证用户,并且React确实不知道此类令牌的存在,浏览器会自动处理它。在获取和发布Redux的情况下,要么在状态中设置数据或错误。

尝试访问API端点时是否被动检查响应的典型方法,使用expires字段设置客户端超时,主动确保会话的有效性或其他一些技术?我特别关注用户所做的未保存更改,并希望尽快通知用户有关已结束的会话。

1 个答案:

答案 0 :(得分:3)

我目前的做法是将jwt存储在localStorage中,当应用程序启动时,我正在加载令牌,尝试使用令牌加载用户数据,如果失败,只需重定向到/ login

然后我只在api模块中使用jwt,而不是在商店中使用。

我的Api模块根据请求知道何时使用令牌以及何时不

如果api模块识别出认证失败,它也会从localStorage中删除令牌..所以下次无法加载。

我的api模块也与redux分开,知道何时使用jwt,何时不知道。

为了使这项工作更加抽象,我创建了一个中间件,如果有效负载为error且值为Not Authenticated

,则会对每个操作做出反应

如果服务器响应因auth而失败,这是我在api模块中的错误。 actionCreator只调度catch中的错误,中间件会对其做出反应。

所以实际上由你决定如何去做,我所说的所有代码都是~100 LOC左右......只是一些处理这些事情的方法。