完全重写,包括改善的理解耶索德:静子网站与授权
的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
等情况下失败。由于这些原因,我无法弄清楚如何添加支票。任何指针将不胜感激。