2012-02-29 51 views
0

我有以下的微小的困境路線的改變:我有一個主幹應用程序,這幾乎完全是基於路由,也就是說,如果我做nameoftheapp/photos/1/edit我應該去到編輯頁面對於給定的照片。問題是,由於我的視圖邏輯在客戶端幾乎100%發生(我使用基於服務的精簡服務器進行存儲和驗證),所以我如何避免那些未經授權的用戶訪問該頁面?當然,我可以讓路由器檢查用戶是否被授權,但這已經導致重複驗證方面的工作。當然,我不能在沒有驗證的情況下離開服務器端,因爲那樣API將暴露給任何類型的訪問。驗證在Backbone.js的

我現在沒有看到任何其他方式。除非有人提出了一個聰明的想法,我想我將不得不復制驗證客戶端和服務器端。

回答

4

基本規則應該是「永遠不要相信客戶」。切勿向客戶提供他們不允許擁有的東西。

所以,如果用戶去nameoftheapp/photos/1/edit,想必你嘗試從服務器獲取圖像。

服務器應該響應HTTP 401響應(未授權)。

您的看法應該有這樣的錯誤處理程序,並告知他們沒有授權用戶 - 無論是什麼方式,你有興趣 - 在編輯觀點的錯誤信息,或「history.back() 「返回到之前的」頁面「。

所以,你真的沒有重複驗證邏輯 - 你只需要你的意見,能夠有意義地從服務器驗證的響應做出迴應。

你可能會說,「這是沒有效率的 - 你最終使更多的API調用」,但那些未經許可的電話是不會被使用的應用程序中的任何規則的方式,用戶的正常現象,他們將成爲探測的結果,我可以通過觀看網絡標籤找到所有的API調用,並使用我想要的任何工具直接點擊API。所以,如果你在客戶端進行了驗證,那麼真的不會有更多的API流量。

0

我遇到了同樣的問題,前一陣子,它似乎是最好的做法是使用服務器端驗證。我的建議...使用模板引擎,如Underscore,它是Backbone的依賴項,設計模板,對於那些只有經過身份驗證的用戶或有權這樣做的用戶,纔可以訪問......您要求服務器缺少基於CSRF標記或session_id或兩者(或您選擇的任何其他服務器端驗證方法)的數據(通常是小塊JSON數據),然後渲染模板......否則,會顯示預定義的錯誤相同的模板...邏輯足夠簡單...