完全重寫,包括改善的理解耶索德:靜子網站與授權
的Yesod
類型類包含的功能isAuthorized
,你能適應這樣不同的路線僅適用於不同的用戶組訪問。 腳手架網站顯示的是如何做到這一點,包括作出授權子網站提供給大家舉例:
isAuthorized (AuthR _) _ = return Authorized
腳手架網站也很有幫助包括靜態內容的子網站。但是:該靜態子網站並不尊重您在isAuthorized
中所做的事情。您可以檢查通過添加一個模式匹配像
isAuthorized (StaticR _) _ = error "this error is never reached"
您仍然可以訪問所有靜態內容(包括新建一個),你永遠不會遇到這樣的模式匹配。
確實讓每個人都可以訪問像bootstrap或jquery這樣的內容。仍然可以通過遵守isAuthorized
並始終返回Authorized
來實現相同的結果,這與使用授權子網站或圖標處理程序完成的方式相同。
我個人希望更進一步與調度像
isAuthorized (StaticR (StaticRoute ("public":_) _)) _ = pure Authorized
isAuthorized (StaticR (StaticRoute ("admin" :_) _)) _ = checkIsAdmin
isAuthorized (StaticR (StaticRoute ("cats" :_) _)) False = checkIsAllowedToViewCats
:
看來唯一缺少的位,讓靜態子網站兌現支票或加墊片,做。
不幸的是,該子網站是模板haskell的大量複雜的代碼和很多魔術做複雜的事情,如嵌入文件在可執行文件。它包含在腳手架中的方式有更多的魔力。我也只是瞭解子網站和我的培訓,以查看類型爲文檔在類型系列或Q Def
等情況下失敗。由於這些原因,我無法弄清楚如何添加支票。任何指針將不勝感激。