Reactjs-我可以在我网站的所有页面中使用AWS Amplify的Auth.authenticatedUser功能吗



我的问题是概念性的,所以我不会在这里写任何代码。

我正在用Reactjs构建我的网站,所有的身份验证过程都正常工作。为了方便起见,我将考虑网站中的03页:-第1页:使用Auth.SignIn方法的用户登录页。当用户通过身份验证时,它会自动转到第2页。

  • 第2页:在这个页面中,必须呈现来自用户的大量信息。为了实现这一点,有一个API,其中的输入参数是用户名。要获取username参数,在呈现页面时会调用Auth.authenticatedUser方法。然后调用API从数据库中获取用户信息。假设第2页中只有一个按钮可以访问第3页。

  • 第3页:在这个页面上有更多关于用户的信息,必须从数据库中读取。获取这些信息的API的输入参数也是"用户名"。要获得username参数,我有两个选项:选项1:再次使用Auth.authenticatedUser并获取用户名选项2:将"用户名"作为道具从第2页传递到第3页。

在我的情况下,使用选项1要容易得多,因为我的网站有很多页面,将道具从一个页面传递到另一个页面是一项困难的任务-我最终将不得不使用redux。

我的问题是:-在所有页面中使用Auth.authenticatedUser获取用户名信息有问题吗?这样做有任何不利之处(即渲染页面的速度等(

从源代码来看,Amplify将用户缓存在内存和localStorage中,因此检索用户名应该相当高效。

只需在浏览器的网络选项卡中仔细检查Amplify不会在每次呼叫Auth.currentAuthenticatedUser时发出任何网络请求。

从外观上看,Amplify的开发似乎考虑到了您的用例,因为它几乎可以像用户身份验证信息的"全球存储"一样使用。Amplify不只是API的包装器,而是为您提供一些缓存和逻辑。因此,最好直接调用它,而不是将用户的数据存储在Redux中或在页面之间传递。将用户的数据存储在Redux中或在页面之间传递只会创建重复的逻辑。

最新更新