[英]User profile in isomorphic applications
我目前正在使用React,Redux,Express和Node向網站添加登錄以及一組與登錄相關的高級功能。 對於實際的登錄,我使用的是Passport,以及Facebook,Google和Twitter策略。 獲取所需令牌后,它將發送到AWS Cognito聯合身份以獲取用戶的同步數據。 網站數據也將在需要時同步回Cognito。
用戶登錄后,我可以在Node服務器上構建完整的用戶配置文件,但是現在呢?
// 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#)或cookie(JS)都可以很容易地解決此問題,但是在同構應用程序中並不是那么簡單。 假設用戶登錄后可以通過路由訪問profile.jsx:cookie(例如,通過客戶端會話設置)僅在客戶端上運行jsx文件時可用; 服務器渲染后就無法訪問。
即使使用同構cookie或通用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'));
}
}
因此,是否有一種不間斷的方式來處理您想要隨時訪問的用戶配置文件或其他變量,而無需為每種情況編寫大量的自定義代碼? 似乎大多數教程和示例都在服務器或客戶端上專門處理這種事情,在這種情況下,這需要重新編寫網站。
同構應用程序在大多數情況下是相當簡單的,但是當引入身份驗證,配置文件等時,復雜性的確冒了頂峰,因此,我對此表示感謝。
我認為這里的常見情況是添加身份驗證步驟,然后將成功的身份驗證令牌存儲為cookie或應用狀態,然后在后續查詢中提供給配置文件API。
從您的API返回的所有數據也可以添加到Redux存儲中,因此您始終可以訪問它,並在需要持久更改或強制更新當前狀態數據時進行更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.