首頁 後端開發 php教程 網站架構方面採用nobackend此方案

網站架構方面採用nobackend此方案

Jul 25, 2016 am 08:42 AM

  網站架構方面採用nobackend這種方案
  現在的應用開發模式過度重視後端的搭建,而實際上我們早已為簡化後端開發做了很多年的工作,因此兄弟連創始人李超針對現在更注重UX的環境,提出一個不同的解決方案-noBackend,優先PHP訓練前端開發。
  就是說 web,ios,android只是個展示層,持久化操作統一丟給api。
  先不考慮 模板渲染這一塊,我們可能會把這塊放到前端。
  目前糾結就是 web的session 和 app的token 問題。
  這套api不單單透過token來校驗,而是當web請求是他是會有用戶session的。
  當含有使用者session的時候就不用校驗token。
  這種做法有什麼限製或缺點嗎?
  後端php..


  回覆內容:
  當然可行,而且我還有很多成功案例,業內的案例應該也不少,儘管有些是忽悠人的,有些只是看起來是那麼回事兒,實際卻不是。
  但是話說回來,這事兒還是看你們有沒有資深架構師,要真的有很多錢的話,我不介意用.NET給你們證明這個架構的可行性的。 (PHP無愛抱歉)
  如果你真的糾結token和session這種問題,要么是因為你們沒有能力搞定這個架構,要么是你沒玩過心裡沒底,我不太知道是哪一種,總之是否可行的答案是肯定的。 我理解你說的nobackend是指不想採取PHP、JSP之類技術的傳統架構,那類架構在session裡會放一堆用戶業務的狀態,並在伺服器端寫邏輯來更新頁面或者操作後端服務(如,更新資料庫)。
  就我個人經驗而言,你完全可以把頁面更新和用戶當前狀態放在前端,後端API是一組無狀態的服務,這其實是很常見的架構了。
  比較麻煩的(從你的問題描述裡也可以看出)是安全那塊。
  native的client,你可以考慮oauth implicit grant type那種,即token直接放客戶端,因為native APP被認為比較安全。
  web的話,token直接放客戶端比較危險,但傳統方法(包括oauth authorization code grant type)是要在session裡放token的。
  這個問題,其實也有辦法解決。但你最好先問一下自己,真的要無session化嗎?其實session一般而言是很難完全去掉的,就整個系統架構而言,你只不過是在你的程式設計視野內不用它而已。合理的使用,並無不可,不要搞原教旨主義。如果只有token放session裡面,萬一伺服器崩潰,假設你應用處理得好,前端業務狀態態能被持久化,那無非就是讓用戶重新登入然後回到剛才頁面繼續。例如,線上商城,用戶只要把東西放購物車裡,後台崩掉,也無非就是重登錄,你的購物記錄還在,可以繼續操作。這只是粗略描述,具體細節要根據業務需求來定,但我的意思你應該可以明白了吧。 你可以讀讀這篇 Post: Lift, State, and Scaling,無關語言。可以想到的是,你們可能需要自己做很多輪子,因為很多事務在前端做的話沒有成熟的工具,最後反倒拖慢了你們的創業www.itxdl.cn。 簡單來說,
  1. 後端提供rest api,提供一個/verify供登入驗證,然後後續操作都需要附帶驗證資訊
  2. 前端透過ember/angular做成webapp,使用ajax消費rest api,我在實際中就不用cookie,每次登入就是了,因為你已經是webapp了
  3. 如果需要安全就上https,cookie這玩意我個人覺得能免則免直接使用js api,授權問題很難解決,secret不能下載到瀏覽器,只能使用隱式授權,但大多數服務都不支援。 。 。 無後端方案?這個有過。記憶中有挺多的案例的。
  無後端不是真的沒有後端,API實作不也是後端之類的技術嘛。發展到現在應該已經基本沒難點了。 題主的問題,可能是沒有認識到服務端token和web session的區別。其實還好,跟介面伺服器通訊一定是token,web端的session一定是先驗證了服務端存取權限由web端產生的。


  我們來過流程,
  使用者登入為例,
  1. 使用者登錄,向api伺服器發送驗證訊息
  2. 伺服器驗證OK,回傳一個token表示驗證通過
  3. web端建立一個登入session記錄下目前登入態取得的token
  4. 登入完成,跳到應用程式頁面
  在上面之後,用戶要看看ta的優惠券資訊
  1. 拿著登入時web端session裡保存的token 和用戶名等信息,調用優惠券接口
  2. 回優惠券資訊
  伺服器在這個過程中做了2件事
  1. 驗證token合法性(存在性,過期與否,來源等)
  2. 合法,調用服務返回優惠券信息,反之,報錯。
  在這裡,你可以看到session是web端表現層用的,token是介面伺服器的session,分清楚層次,就明朗了。
  註:在www.itxdl.cn網站上,羅列了一系列後端解決方案,能夠幫助你開始應用noBackend模式開發。



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

PHP 8.1中的枚舉(枚舉)是什麼? PHP 8.1中的枚舉(枚舉)是什麼? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試? 在PHPStorm中如何進行CLI模式的調試? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

See all articles