避免使用ReactJs + Redux + thunk显示来自另一个用户的数据(旧数据)

时间:2020-05-11 17:53:57

标签: reactjs redux react-redux

我已经阅读/观看了有关Redux的ReactJs的一些指南/教程,内容涉及如何使用它来获取数据并将其显示在屏幕上。基本是:

const DataView = () => {
    const dispatch = useDispatch(); 
    const {data} = useSelector(data => data);

    useEffect(() => {
        dispatch(getData());
    }, []);

    return (

    // show data

    );
};

这很好用。数据提取完成,并且数据正确显示。

但是,如果此数据是明智的,而其他人不应该能够看到它怎么办?如果我是第一次进入此屏幕,则“数据”将为空。没问题useEffect将进行数据获取,并在完成后显示信息。

现在,如果我转到另一个页面,然后又回到那里,该怎么办?因为“数据”不再为空,所以我将显示旧数据,直到再次完成提取。这不是问题,因为我与同一个用户在一起。

如果该用户注销,又有一个用户登录怎么办? 如果新用户进入此页面,我将显示其他用户信息,直到提取完成(这可能需要几秒钟)。

我正在考虑几种方法来“解决”此问题,但是我不确定哪一个是正确的:

1)将信息存储在链接到用户会话的化简器中。

2)直接调用axios以获取数据,以避免显示来自axios归约器的旧数据。

3)登录/注销后清除减速器信息

任何解释这种情况的博客/视频/书籍都将受到欢迎!谢谢!

1 个答案:

答案 0 :(得分:1)

只有我的2美分...

由于您提到的安全原因,我在Redux存储中管理的所有数据始终与当前登录用户相关。

在注销或过期的会话(jwt +刷新令牌)上,我总是通过redux-reset重置Redux存储。

一般来讲,我看不出有什么充分的理由在本地保留/保留多个用户会话数据。

以下是与该主题相关的一些很好的资源:

* 简而言之,他们所做的就是在注销时重置/清除商店+本地存储/ cookie。

  1. How to Secure Your User’s Data After Logout in Redux
  2. Secure Your React and Redux App with JWT Authentication
  3. Is Redux a secure place to store JWT tokens?