我目前正在使用React,Redux,Express和Node添加登錄以及與登錄相關的一組高級功能。對於實際的登錄,我使用Passport,使用Facebook,Google和Twitter策略。獲取必需的令牌後,將其發送到AWS Cognito聯合身份標識以獲取用戶的同步數據。來自網站的數據也會在需要時同步回Cognito。同構應用程序中的用戶配置文件
用戶登錄後,我可以構建節點服務器上的完整的用戶配置文件,但現在該怎麼辦?
// 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 ..
.............
}
早在天,這將是非常容易使用任何會話變量(Java/C#)或餅乾(JS)來解決,但在同構的應用它不是那麼簡單。假設用戶在登錄後通過路由訪問profile.jsx:一個cookie(例如通過客戶端會話設置)僅在客戶端上運行jsx文件時纔可用;它在服務器呈現時無法訪問。
自定義代碼出現到使用像同構,餅乾或一般的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'));
}
}
那麼,有沒有處理用戶配置文件,或者你想在任何時候訪問其他變量,而無需編寫大量的自定義代碼量每個方案順利呢?看起來大多數教程和示例都只是在服務器或客戶端上處理這類事情,在這種情況下需要重寫網站。
同構的應用是相當簡單的在大多數情況下,但真正的複雜性通過屋頂射擊在引入認證,型材等,所以我非常感謝對此事的任何反饋。
有支持同構的應用程序的框架,據我所知快遞不是其中之一 – niceman
你可以看看meteor.js寫這樣的應用程序(它可以與反應) – niceman
該網站已在生產,已經有一年了。這是一個基於快速/節點的同構應用程序,所以我不確定我明白你的意思..? – MortenTZ