Как использовать друга и bidi для переноса обработчиков ресурсов?Обертывание обработчиков ресурсов с помощью bidi
Я удался получить 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)
))
Это работает на «/» маршрут, но я хотел бы, чтобы убедиться, что некоторые ресурсы не могут быть достигнуты без Authoring для первого.
Это представляется возможным с friend/wrap-authorize
функции:
Моя ближайшая попытка работает на AUTH завернутые маршрутов, но не совпадает на NON/Дев/маршрутам:
(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
"[email protected]"]}
;correct
(match-route routes "/index.html")
=>
nil
;not correct
Я думаю, что Согласованная часть для шаблона маршрута [true (resources {:prefix "public/"})]
неверна, потому что когда я меняю его на :key
, `index.html 'соответствует.
Как я могу сопоставить маршруты non/dev/* с государственными ресурсами?
Спасибо, что посмотрели на проблему. Теперь я замечаю, что мой код даже не работает для dev/handler, или, по крайней мере, не последовательно. Я думаю, что сейчас переключусь на compojure. Также путают, почему мой (файл-ответ) и (ресурс-ответ) заставляют мой браузер загружать ответы вместо загрузки их в браузере. – bbs
Yup, к сожалению, примеров не так много ... Грустно, потому что это похоже на отличную идею, но заставить ее работать в реальных ситуациях сложно. Файл загрузки браузера обычно является признаком того, что заголовок типа контента не установлен (из-за отсутствия промежуточного программного обеспечения или обработчика, не возвращающего ответ). –