簡體   English   中英

與Express Private Routes一起反應

[英]React with Express Private Routes

我主要使用服務器端渲染解決方案將數據從服務器傳遞到客戶端並在瀏覽器中呈現。

這樣做的一些主要好處包括能夠獲取數據並將其傳遞給客戶端,而不會暴露公共路由。 因此能夠隱藏數據並且只在我想要的時候公開它。 我知道其他應用程序(如Facebook)的數據只能由其應用程序(iOS,Android,Web應用程序)接收,例如時間軸數據不是公共路徑,只能由自己的應用程序接收。

如何使用React實現這樣的目標? 使用服務器端呈現,我可以鎖定這些函數/路由,只允許從后端代碼調用它們而不暴露它們,我還可以執行檢查以確保用戶已登錄等操作。

我怎樣才能用React實現這個目標?

據我了解,您希望將某些路由限制為登錄用戶。

要使用Facebook等身份提供商登錄,goto是passport.js。 關於使用反應/快遞/護照的問題之前已經被問過,例如這里

編輯回應評論:

所以,你有一些輸出數據的功能。 如果渲染服務器端,則不會公開這些功能。 但是,如果您通過API公開它們......它們會暴露出來。 而且,由於JavaScript代碼被發送到客戶端,您不能只在頭文件中放置一個秘密,因為您必須將該秘密發送給客戶端。

我上面說的是,如果你將這些API限制為登錄用戶,那么OAuth和/或JWT就解決了這個問題 JWTs coukd也可以在沒有登錄的情況下為你工作。

但是,如果你想要做的是讓API對應用程序的請求保持開放狀態,無論用戶是否登錄,我都不知道任何完美的解決方案,只是一些技巧:

  • 使用HTTPS
  • 將CORS策略設置為僅允許您的域
  • 使用像頭盔這樣的包

值得一試的是我沒有使用過,但看起來不錯的是Microgateway

這通常使用認證/授權的不同概念來解決,例如在OAuth2協議中定義的。

讓我在非常高和抽象的層面上描述這個:

您可以說有不同的客戶端訪問您的API。 API可以定義哪個客戶端可以訪問哪條路由。 每個客戶端都有一個客戶端ID和一個客戶端密鑰,用於向身份驗證服務器標識自己,並根據令牌交換ID和密鑰。 此令牌(例如Json Web Token)對此客戶端的權限進行編碼,這可能意味着訪問API中的某些路由,而不是其他路由。

但是,您必須考慮到沒有純Web應用程序是100%安全的,即在純Web應用程序中無法100%確定地保護上述客戶機密碼。 為此,您還應該使用密碼等實現另一個身份驗證流程...否則,您還必須實現某種服務器端代理,以便在服務器端保密,並將令牌返回給客戶。

如果您使用要限制訪問的第三方API,則需要在其間放置代理或API網關,這將執行上述訪問控制。 因此,這意味着以這種方式可以訪問的路由不應該發布任何敏感數據,例如用戶數據。

我希望這些想法可以幫助您以某種方式為您的問題找到合適的架構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM