フレンドとビディを使用してリソース ハンドラーをラップするにはどうすればよいですか?
ルートを認証するためにoAuthを取得することに成功しました:
(defn auth-handler [request] (friend/authorize #{::user}
{:status 200
:body "a secret"}))
(def routes ["/" {true auth-handler}])
(def app (make-handler routes))
(web/run-dmc (-> app
var
(friend/authenticate
{:allow-anon? true
:workflows [(oauth/workflow
{:client-config client-config
:uri-config uri-config
:credential-fn credential-fn})]})
(wrap-resource "public")
(wrap-defaults site-defaults)
))
これは「/」ルートで機能しますが、最初に認証しないとアクセスできないリソースがあることを確認したいと思います。
それは関数で可能であるようfriend/wrap-authorizeです:
私の最も近い試みは、認証ラップされたルートで機能しますが、非 /dev/ ルートでは一致しません:
(def routes ["/" [["dev/" [[true (friend/wrap-authorize (resources {:prefix "dev/"}) #{::user})]]]
[true (resources {:prefix "public/"})]]])
(match-route routes "/dev/index.html")
=>
{:handler #object[cemerick.friend$wrap_authorize$fn__24411
0x2400d0be
"cemerick.friend$wrap_authorize$fn__24411@2400d0be"]}
;correct
(match-route routes "/index.html")
=>
nil
;not correct
Route パターンの Matched 部分[true (resources {:prefix "public/"})]が間違っていると思います:key。
非 /dev/* ルートをパブリック リソースに一致させるにはどうすればよいですか?