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

  網站架構方面採用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
使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

您如何防止與會議有關的跨站點腳本(XSS)攻擊?您如何防止與會議有關的跨站點腳本(XSS)攻擊?Apr 23, 2025 am 12:16 AM

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

您如何優化PHP會話性能?您如何優化PHP會話性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

什麼是session.gc_maxlifetime配置設置?什麼是session.gc_maxlifetime配置設置?Apr 23, 2025 am 12:10 AM

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

您如何在PHP中配置會話名?您如何在PHP中配置會話名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

See all articles

熱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

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

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

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

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),