我正在使用 Luminus 开发一个站点,直到现在我的中间件 wrap-base 函数看起来像:
(defn wrap-base [handler]
(-> ((:middleware defaults) handler)
wrap-auth
(wrap-access-rules {:rules rules :on-error on-error})
(wrap-authentication (session-backend))
wrap-flash
(wrap-defaults
(-> site-defaults
(assoc-in [:security :anti-forgery] false)
(assoc-in [:session :store] (ttl-memory-store (* 60 30)))))
wrap-internal-error))
和我的 routes/home.clj 文件:
(defn home-routes []
[""
{:middleware [middleware/wrap-csrf
middleware/wrap-formats]}
(merge public-routes admin-routes)])
但现在我需要开发一个新的 API(“/api/getcustomers”),所以所有的身份验证/授权(和 csrf)中间件必须只用于“home-routes”,而不是用于新的 API 路由。API 路由保存在新的 routes/services.clj 文件中。
令人高兴的是 Luminus 使用 reitit.ring,一种数据驱动的路由解决方案,但我不确定如何将身份验证/授权内容从通用中间件中移出并仅将其分配给“home-routes”部分。