Clojure Noir: как настроить базовую аутентификацию только для части приложения

Я настроил базовую аутентификацию HTTP для своего приложения с помощью базовой аутентификации Ring. Он работает просто отлично и выглядит так:

(:require [noir.server :as server]
...
(server/add-middleware wrap-basic-authentication authenticated?)

проверку подлинности? моя собственная реализация функции. Теперь я хотел бы настроить только часть приложения, которая будет проходить базовую аутентификацию, а другую часть - как общедоступную. Я знаю, что это можно сделать с помощью Ring (и Compojure), поэтому должно быть возможно сделать с Noir, который построен на Ring. Я просто не совсем уверен, как применить пример, адаптированный к Noir, потому что он использует маршруты, и я не вижу, как я могу добраться до тех, кто в Noir. Есть идеи?

1 ответ

Проблема с Noir заключается в том, что маршруты управляются изнутри, и вы ничего не можете сделать, чтобы изменить их связь с промежуточным программным обеспечением и тому подобным. Noir никогда не подходил для сложных сценариев промежуточного программного обеспечения, и это еще более верно теперь, когда это устарело. Возможно, это не тот ответ, который вы хотите услышать, но я настоятельно рекомендую вместо этого использовать Compojure. Если вы ищете что-то вроде батарей, включите шаблон luminus leiningen для создания веб-приложения, включающего батарейки, с Compojure, lib-noir и многими другими вкусностями.

Другие вопросы по тегам