同构应用程序中的用户configuration文件

我目前正在使用React,Redux,Express和Node来添加login,以及一系列与login相关的高级function。 对于实际的login,我使用Passport,使用Facebook,Google和Twitter策略。 获取所需的令牌后,会将其发送到AWS Cognito联合身份标识以获取用户的同步数据。 来自网站的数据也会在需要时同步回Cognito。

在用户login后,我可以在Node服务器上构build一个完整的用户configuration文件,但是现在呢?

// server.jsx // imports ............. // variables ............. var userProfile; // logging the user with Passport and adding it to the profile ............. app.use((req, res) => { // I can do whatever I want with the profile here ............. // handling the request and creating an initial state .. ............. } 

回过头来看,使用会话variables(Java / C#)或cookies(JS)可以很容易地解决这个问题,但是在同构应用程序中并不那么简单。 假设用户login后通过路由访问profile.jsx:一个cookie(例如通过客户端会话设置)仅在客户端上运行jsx文件时才可用; 它在服务器呈现时无法访问。

即使使用像isomorphic-cookie或universal-cookie这样的东西,自定义代码似乎也是必需的,这几乎违背了同构应用程序的目的。 我也想过使用Redux,但是Redux似乎只在Node上有一个初始状态,这没有什么帮助。

 // Profile.jsx import React , { Component } from 'react'; import Cookies from 'universal-cookie'; class Profile extends Component { // Stuff ............. render() { // Would love to be able to access to the profile without custom code like this if (typeof window != 'undefined' && window.document) { const cookies = new Cookies(); console.log(cookies.get('user')); } } 

那么是否有一种平滑的方式来处理用户configuration文件或其他variables,而不需要为每个场景编写大量的自定义代码? 看来大多数教程和示例都是在服务器或客户端上处理这类事情,这需要在这种情况下重写网站。

在大多数情况下,同构应用程序是相当直接的,但是当引入身份validation,configuration文件等等时,复杂性实际上是非常复杂的,所以我非常感谢任何关于此问题的反馈。

我认为这里常见的情况是添加一个身份validation步骤,然后将一个成功的身份validation令牌存储为一个Cookie,或者在您的应用程序状态下,您将在后续查询中提供回configuration文件API。

从您的API返回的任何数据也可以添加到您的Redux存储,以便您随时可以访问它,并随后更新,无论何时需要保持更改或强制更新当前状态数据。